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"를 함수에 추가해 줄 수 있는 경우가 과연 많을까? 본인 경험상 라이브러리 함수로 받아 수정을 못하는 경우가 태반인데, 과연 저렇게 수정해서 쓸 수 있는 경우가 많을까 고민이다.
뭔가 잘못 알고 있는 건 아닐까? 누가 알면 알려줬으면 좋겠다.