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"를 함수에 추가해 줄 수 있는 경우가 과연 많을까? 본인 경험상 라이브러리 함수로 받아 수정을 못하는 경우가 태반인데, 과연 저렇게 수정해서 쓸 수 있는 경우가 많을까 고민이다.
뭔가 잘못 알고 있는 건 아닐까? 누가 알면 알려줬으면 좋겠다.
'프로그래밍 > C++' 카테고리의 다른 글
null pointer vs stray pointer (0) | 2013.05.26 |
---|---|
[c++] malloc/free 대신 new/delete을 쓰는 이유? (0) | 2013.05.18 |
[c++] expected unqualified-id before string constant (0) | 2013.05.11 |
C++에서 C 함수 사용하기 (0) | 2013.02.02 |
생성자 뒤에 : 붙는 경우 (0) | 2013.01.01 |