기본 콘텐츠로 건너뛰기

extern "C"

C++은 특성상(오버로딩이나 기타등등) symbol에 name mangling을 사용한다. 때에 따라서 이러한 name mangleing을 사용하지 말아야 할 때가 있다. 이러한 것은 extern "C" 키워드를 사용하여 name mangling을 하지 말도록 컴파일러에게 알려줘야한다. 일반적으로 C/C++을 섞어서 쓸 경우가 있을 때(library 작업 등) 아래와 같이 쓰는 것이 괜찮을 듯 싶다.
#if defined(__cplusplus)
extern "C"
{
#endif

extern int doIt(const char* what);

#if defined(__cplusplus)
}
#endif
__cplusplus 라는 definition은 C++ 컴파일러가 암묵적으로 정의해놓은 것이다. (특별히 옵션 줄 필요 없음)
  1. extern "PASCAL" 파스칼 타입으로 name mangleing한다.
  2. extern "FORTRAN" 포트란 타입으로 name mangleing한다.

각기 언어와 C++간 협업을 할 때 쓰인다.

댓글

이 블로그의 인기 게시물

탐색기에서 OneDrive 이 2개로 보이는 문제

왜 2개가 보이는지 모르겠지만, Registry 삭제하면 됨 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace 하위 키에서 OneDrive 둘 중에 하나만 지워도 바로 반영됨. 참조:  https://answers.microsoft.com/en-us/msoffice/forum/all/duplicate-onedrives-in-file-explorer/49c935a6-287b-43a5-aed5-2dee2a1c1b22