Programming/C

extern 키워드의 이해

알 수 없는 사용자 2014. 5. 20. 15:54
반응형

 

extern 키워드의 이해

C언어에서 컴파일은 파일 단위로 문법이 제대로 사용되었는지 확인하기 때문에 다른 파일에 정의된 함수나 변수, 혹은 코드 뒤에 정의된 함수나 변수를 사용하려 하면 undefined 에러가 발생한다.

이 때 사용하는 변수나 함수가 다른 파일에 정의되어있으니 걱정말고 컴파일 하라고 extern 키워드를 사용하여 컴파일러에게 알려준다.

 

 

// main.c
extern int add(int a, int b);

int main()
{
    return add(3, 2);
}

int add(int a, b)
{ return a+b; }

 

많은 경우 이러한 선언된 함수나 변수를 해더파일에 넣어 사용하는 소스코드에서 include 하여 사용하는 형식을 취한다.

// main.c

#include "add.h"

int main()

{

    return add(3, 2);

}

// add.h

extern int add(int a, int b);

// add.c

int add(int a, int b)

{ return a+b; }

 

처음엔 정의된 함수가 들어있는 파일을 include하지 않고 단지 선언해준 파일을 include하는 것이 이상할 수 있는데 이같이 떨어져있는 함수는 컴파일 다음 단계인 link단계에서 해당 함수를 찾아 호출하는 곳에서 정의된 함수를 연결해주게 된다. 만약 선언만 되어있고 정의가 되어있지 않다면 link에러(LNK2019와 같은)가 발생할 것이다.

 

반응형