在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?
在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?
不明白,可否详细解答!
问题点数:30、回复次数:3Top
1 楼linjiework(霖杰)回复于 2002-04-22 17:39:18 得分 15
因为 C 语言和 C++ 语言的编译规则不一样,所以要告诉系统哪些函数是用 C 方式编译,哪些函数需要用 C++ 方式编译。
如果你不加 extern "C" ,在编译时,系统会提示找不到此函数。
Top
2 楼ginger(似水流年)回复于 2002-04-22 17:43:29 得分 0
standard C++
C is c
c++ is C++Top
3 楼rovoboy(魂之猎人)回复于 2002-04-22 17:57:42 得分 15
extern "C"表示编译生成的内部符号名使用C约定
例如:
int Fun(int i,int j)
C:_Fun
C++:_Fun_int_int
具体生成什么可能与编译器有关
由于C++支持重载,而重载是在编译期确定的,所以C++必须在内部符号名上区分各重载函数,所以就将参数类型加在函数名后。
Top




