[[프로그래밍_NOTE]] 124

extern

1. 변수에 사용할 경우 선언된 글로벌 변수를 외부에서 사용하고 싶을때 쓰는 것으로, 메모리에 별도로 잡히지 않는다. 컴파일러는 extern을 만나게 되면, 외부 어딘가에 해당 전역변수가 선언되어 있다고 판단한다. 2. 함수에 사용할 경우 static (정적) 키워드를 사용할 경우는 해당 파일안에서만 함수를 호출가능. extern(외부) 키워드를 사용할 경우는 어디에서든 호출할 수 있도록 외부함수로 만들어줌.

extern "C"

흔히 볼수 있는 아래의 코드는? #ifdef _cplusplus extern "C"{ #endif ... ... #ifdef _cplusplus } #endif C++는 컴파일시 함수 이름을 모두 다른 이름으로 바꿔주기 때문에 C에서 컴파일된 함수를 링크시킬 때는 해당 함수의 선언부 혹은 include 부분에 extern "C"라는 키워드를 사용하여 해당 함수가 C로 컴파일된 함수라는 것을 컴파일러에게 명시적으로 알려줘야 한다. ( 쉽게 이야기하면 C로 컴파일된 함수를 C++ 에서 부를 수 없기에, 이를 가능하게 하는 기법이다. ) //exercise // ■ C++ 에서 C 에서 컴파일된 함수를 가져다 쓰려면? 1. C를 컴파일하여 오브젝트 파일 생성 ( i.e : gcc -c CFile.c ) 2. ..