C 언어

extern 변수

wowbelly 2016. 12. 31. 16:08

전역(global)변수를 위한 extern의 올바른 사용(포스팅 예정)

http://hwangssi.egloos.com/3367570

C 교재에서 extern 변수의 사용에 대한 설명을 보면, 다음과 같이 사용하는 예를 많이 든다.

-----------------------------------------
// test1.c

int test;

-----------------------------------------

-----------------------------------------
// test2.c

extern int test;
-----------------------------------------

간단한 프로그램의 경우 이러한 방식으로 extern을 사용하면 다른 파일에 있는 전역 변수를 끌어다 쓰기가 편하다.
하지만, 파일수가 상당히 많은 솔루션의 경우 위와 같은 방법으로 extern을 사용하게 되면 여러 소스 파일에서
extern을 남발하여 사용하게 된다. 컴파일러 입장에서는 전혀 문제될 것이 없지만, 프로그래머 입장에서 보면,
변수가 전혀 관리가 되지 않는 형태로 가게 된다.

이럴 때는 헤더파일에 변수의 선언부를 두고, 하나의 소스 파일에만 정의를 해두는 것이 전체적인 관리 측면에서 용이하다.
-----------------------------------------
// test1.h
extern int test;
-----------------------------------------

extern으로 정의가 아닌 선을을 했기 때문에 소스 파일에 정의를 해주어야 한다.
-----------------------------------------
// test1.c

#include "test1.h"

int test = 0;
-----------------------------------------

-----------------------------------------
// test2.c

#include "test1.h"

func()
{
    test = 1;
}
-----------------------------------------