extern "C"
extern "C"
?
在C++中常在头文件见到extern "C"修饰函数,那有什么作用呢? 是用于C++链接在C语言模块中定义的函数。 C++虽然兼容C,但C++文件中函数编译后生成的符号与C语言生成的不同。因为C++支持函数重载,C++函数编译后生成的符时带有函数参数类型的信息,而C则没有。 例如 这就导致一个问题:如果C++中使用C语言实现的函数,在编译链接的时候,会出错,提示找不到对应的符号。此时 C++调用C函数的例子: 引用C的头文件时,需要加 //cExample.h #ifndef C_EXAMPLE_H #define C_EXAMPLE_H int add(int x,int y); #endif //cExample.c #include "cExample.h" int add( int x,int y ) { return x + y; } //cppExample.cpp extern "C" { #include "cExample.h" } int main(int argc,char* argv[]) { add(2,3); return 0; } //Generate cExample.o file
gcc -c cExample.c
g++ -c cppExample.cpp
g++ cppExample.cpp cExample.o -o main
注意,如果 C中调用C++函数: // cppExample.h #ifndef CPP_EXAMPLE_H #define CPP_EXAMPLE_H extern "C" { int add( int x,int y ); } #endif // cppExample.cpp #include "cppExample.h" int add( int x,int y ) { return x + y; } // cExample.c extern int add( int x,int y ); int main() { add( 2,3 ); return 0; } Reference:?http://www.cppblog.com/macaulish/archive/2008/06/17/53689.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |