본문 바로가기
C

extern "C"

by GGoris 2015. 6. 4.
반응형

extern "C"



extern "C"는 c++컴파일러에서 c코드 컴파일시 

mangling name생성을 거부하는 구문입니다.


c++에서는 함수 오버로딩을 제공하기 위해 mangling name이라는 것을 내부적으로 만듭니다.

mangling name 은 반환형이나, 인자을 보고 접두어나 접미어를 붙여준 이름을 말합니다.

물론 개발자에게 직접적으로 보여주지 않고, 내부적으로 같은 이름의 함수를 구분하기위해 사용 됩니다.


하지만 c컴파일러는 이를 제공하지 않기에

add 함수를 선언, 정의하고

add라는 이름을 사용합니다.


하지만 c++컴파일러가 컴파일을 하게 되면 c코드인 add는 manglin name으로 변경되게 되고 add라는 함수의 이름은 더의상 무의미해 집니다.

다시말해 사용할 수 없게 되는것이지요

때문에 c코드 라이브러리를 c++사용하게되는 경우

c 코드에서 extern "C"구문을 사용하여 mangling name의 생성을 방해하도록 합니다.

extern "C"구문을 사용한 add함수는 c++컴파일러에서 컴파일 되어도 add라는 이름을 유지하게 됩니다.







반응형

'C' 카테고리의 다른 글

[오류] mysql.h 그런 파일이나 디렉터리를 찾을 수 없습니다.  (0) 2015.04.23
[c예제] 볼링 스코어 보드  (0) 2015.04.16
언제 포인터를 사용하나?  (0) 2015.04.01
[애러잡기] error c2275  (0) 2013.06.20
C언어 #pragma  (0) 2013.06.13

댓글