Tech & IT/프로그래밍

C++과 C가 섞여있을 경우 C 함수를 위해 extern "C" 사용

해피콧 2009. 12. 10. 13:54
'); }
'); }
project에 cpp파일 및 c 파일이 동시에 있을 경우 c파일의 함수를 extern할 때는 extern "C"를 붙인다

이유는 cpp은 compiler에서  이름을 바꿔서 asm코드를 만든다
이유는 함수 overloading을 위해서인데 이 때문에
cpp파일에서 extern 으로 함수를 선언했을 경우에도 cpp규칙에 의해서 함수이름을 name@@YAHHHH@z등으로 바꾸게 된다.
하지만 extern "C"를 선언하게 되면 이름을 바꾸지 않고 name을 그대로 사용하기 때문에
다른 파일에 있는 c function도 사용 가능하다

mm.cpp

#include <stdio.h>

extern "C" int add(int x, int y, int z, int k);

int add(int x, int y)
{
int k = 0;
k = x + y;
return k;
}

int add(int x, int y, int z)
{
int k = 0;
k = x + y + z;
return k;
}


void main()
{
int a = 100, b = 20, c = 30, d = 10, e;
e = add(a,b);
e = add(a, b, c);
e = add(a, b, c, d);
}

mm2.c

int add(int x, int y, int z, int k)
{
int m;
m = x + y + z + k;
return m;
}