본문 바로가기
c언어

c언어 연결 알아보기(외부 연결, 내부 연결, extern 지정자, static 지정자)

by 개발자 L 2022. 12. 6.
반응형

c언어 연결 알아보기(외부 연결, 내부 연결, extern 지정자, static 지정자)

네 안녕하세요, 이번 포스팅에서는 연결에 대하여 알아보도록 하겠습니다.

우리가 코드를 작성을 하고 나서 여기저기에 소스를 붙입니다.

예를 들어 같은 c언어 끼리 붙일 때도 있지만, 다른 언어들, 예를 들어 파이썬과 붙일 때도 있을 거고, 자바, 리액트 네이티브, 플러터 등과도 붙일 때가 존재를 할 것입니다.

그래서 이러한 연결에 대하여 말씀을 드려보고자 합니다.

그럼 지금부터 시작하도록 하겠습니다.

 

1. 연결이란?

연결이란 다른 곳에 있는 변수들을 이어주는 것입니다.

연결의 종류는 크게 3가지가 존재합니다.

  • 무연결 : 지역 변수이며, 그 어떠한 연결도 가지지 않는다.
  • 외부 연결 : 전역 변수이며, 여러 개의 소스 파일이 연결이 될 수 있다.
  • 내부 연결 : 전역 변수이며, 해당 변수가 선언이 되어있는 하나의 파일에만 연결이 되어있다.

이러한 차이들이 있으며, 순서대로 알아보도록 하겠습니다.

 

1 - 1. 외부 연결

외부 연결은 여러 개의 소스 파일로 이루어진 경우에 연결을 해주는 방법입니다.

보통 우리가 하나의 프로그램을 작성을 할 때 여러 개의 소스 파일들이 스택이 되어서 하나의 웹이나 앱이 만들어집니다.

그 구성원으로는 이러한 것들이 있습니다.

  • html 파일, gui(어플이나 그 외 여러가지 게임 등을 화면에 나타낼 때 사용하는 프로그램)
  • 데이터베이스
  • html을 구성하는 여러가지 소스파일(c언어, 파이썬, 자바, 리액트 네이티브 등 다양한 것들을 씀)
  • 실행파일(views.(확장자명)이라고 부르며, 서버를 구동시키는 커멘드를 입력해서 구동시킴)

이러한 것들이 구성이 되어있기 때문에 그만큼 중요합니다.

그리고 이러한 것들을 연결하기 위해서 c언어에서는 extern 이라는 지정자를 써서 불러옵니다.

이 지정자를 쓰게 되면 외부에서 참조를 할 수 있게 됩니다.

다시 말하면 외부에 존재하는 코드나 파일 등을 불러와서 실행을 시킬 수 있는 것이죠.

extern 지정자는 이런 식으로 사용을 합니다.

//외부에 있는 소스코드
#include <stdio.h>

int all_files;
static int this_file;
extern void sub();

in main()
{
    sub();
    printf("%d\n", all_files);
    return 0;
}

//외부 참조
extern int all files;

void sub()
{
    all_files = 10;
}

이런 식으로 extern이라는 것을 선언을 하여 외부에서 참조를 할 수 있습니다.

여기서 보시면 all_files라는 변수가 전혀 다른 소스 코드 내에 존재를 하지만,

extern 지정자를 써서 불러왔음을 볼 수 있으며,

위에 있는 코드 역시 sub()이라는 함수를 extern 지정자를 이용하여 불러왔음을 볼 수가 있습니다.

이런 것이 바로 외부 연결입니다.

반응형

 

1 - 2. 내부 연결

내부 연결은 static 지정자를 써서 연결을 합니다.

다시 말하면 하나의 소스 파일 내에서만 사용을 한다는 뜻입니다.

그래서 static 지정자가 붙으면 다른 외부 소스 파일에서는 참조를 할 수 없습니다.

그렇기 때문에 외부에서 참조를 하고 싶다면 static을 붙이지 말아야 합니다.

그리고 static이 붙지 않은 변수나 함수 등은 앞서 말씀드린 extern을 이용하여 불러올 수 있습니다.

그렇게 전역 변수로써 취급을 해줍니다.

 

여기까지 연결에 대하여 알아보았는데요,

다음 포스팅에서는 적절한 저장 유형 사용 방법에 대허여 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다~

반응형

댓글