프로그래밍/C++2013. 5. 11. 14:53

c에서 c++함수 호출 시에 역시 extern "c"를 사용하게 되는데, 우선 예를 보자.

 

// gcd.h

#ifdef __cplusplus

extern "C"

#endif

int gcd(int v1, int v2);

 

//gcd.cpp

#include <boost/math/common_factor.hpp>

#include "gcd.h"

extern "C" {

int gcd(int v1, int v2){

return boost::math:gcd(v1, v2);

}

}

 

//sample.c

#include <stdio.h>

#include "gcd.h"

int main()

{

printf("%d와 %d의 최대공약수는 %d(이)다.\n", 14, 35, gcd(14,35));

return 0;

}

 

(위의 예문은 "BINARY HACKS 해커가 전수하는 테크닉 100선, 진명조 옮김" page 74 ~ page 75에서 발췌한 내용이다.)

뭐 다 좋은데, C++에서 저렇게 extern "C"를 함수에 추가해 줄 수 있는 경우가 과연 많을까?  본인 경험상 라이브러리 함수로 받아 수정을 못하는 경우가 태반인데, 과연 저렇게 수정해서 쓸 수 있는 경우가 많을까 고민이다.

 

뭔가 잘못 알고 있는 건 아닐까? 누가 알면 알려줬으면 좋겠다.

Posted by code cat