在C++程序中调用被C编译器编译后的函数,为什么要加extern "C"?
C++语言支持函数重载,C语言不支持函数重载,函数被C++编译器编译后在
库中的名字与C语言的不同,假设某个函数原型为:
该函数被C编译器编译后在库中的名字为:
而C++编译器则会产生像:
之类的名字。为了解决此类名字匹配的问题,C++提供了C链接交换指定符号 extern "C"。
eg:
-
#ifdef __cplusplus
-
#if __cplusplus
-
extern "C" {
-
#endif
-
#endif
-
...
-
...
-
...
-
#ifdef __cplusplus
-
#if __cplusplus
-
}
-
#endif
-
#endif
阅读(722) | 评论(0) | 转发(0) |