[C/C++] extern "C"

우선 참조한 블로그 들

debug me 님의 extern "C" 제대로 생각해보기

Flatinum 님의 [C/C++] extern "C"와 네임 맹글링

japa 님의 [링크에러 LNK2019] C++에서 C 함수 사용하기

[링크에러 LNK2019] C++에서 C 함수 사용하기

출처: https://ospace.tistory.com/187 [JaPa2]
[링크에러 LNK2019] C++에서 C 함수 사용하기

출처: https://ospace.tistory.com/187 [JaPa2]
[링크에러 LNK2019] C++에서 C 함수 사용하기

출처: https://ospace.tistory.com/187 [JaPa2]
[링크에러 LNK2019] C++에서 C 함수 사용하기

출처: https://ospace.tistory.com/187 [JaPa2]

프로그램 소스들을 보면 자주 보게 되는 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의 확장개념이라 필요 없는 줄 알았는데..

여튼 두 언어를 섞어서 사용할 일이 있으면 에러가 발생하지 않게 잘 사용해야겠다.

 

 

댓글

이 블로그의 인기 게시물

[Python] 파이썬에서 Opencv를 이용해 웹캠 영상 읽어오기 및 저장

[MFC] 에디트 컨트롤에 계속 문자열 추가하기(List log)

[Python] OpenCv를 이용하여 마우스 위치 가져오기