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와 같은)가 발생할 것이다.
반응형