[C/C++] extern "C"
우선 참조한 블로그 들
debug me 님의 extern "C" 제대로 생각해보기
Flatinum 님의 [C/C++] extern "C"와 네임 맹글링
japa 님의 [링크에러 LNK2019] C++에서 C 함수 사용하기
프로그램 소스들을 보면 자주 보게 되는 extern "C"
대충 C에서 C++ 함수를 사용하기 위해서 적어준다고만 알고 있었지만
윈도우에서 Visual studio 로만 코딩을 하다 보니 이게 그렇게 중요한가 라는 생각을 했었다.
VS에서 주로 #include <iostream> 으로 C++ 헤더를 추가하고
printf 와 cout을 섞어 사용하다보니 별 필요성을 못 느꼈다.
물론 라이브러리들도 윈도우용이다보니 C++용이었던듯.
그러다가 리눅스로 작성을 해야하는 것이 생겨서 엄청난 귀차니즘을 맞이한적이 있다.
extern "C" 는 C와 C++ 의 컴파일 방식 차이에 의해 생겨나는 미스 매치를 발생하지 않도록 하는데 그 목적이 있다.
이는 C++ 의 오버로딩 등의 기능 때문에 발생한다고 보면 될 듯하다.
자세한건 Flatinum 님의 [C/C++] extern "C"와 네임 맹글링에서 확인해보자.
조사하다 보니 C에서 C++ 함수(라이브러리)를 사용할때도 사용되지만 C++에서 C 함수를 사용할 때도 써야된다고 한다.
japa 님의 [링크에러 LNK2019] C++에서 C 함수 사용하기
C++은 C의 확장개념이라 필요 없는 줄 알았는데..
여튼 두 언어를 섞어서 사용할 일이 있으면 에러가 발생하지 않게 잘 사용해야겠다.
댓글
댓글 쓰기