2008年4月17日星期四
关于extern "C"
如果在.cpp中调用.c文件中的函数(包含.c的头文件,然后用里面的函数),编译的时候可以通过,但链接的时候会提示”unresolved external symbol 函数名“(即没有找到c中的函数体)。加入如下语句可正常链接。
#ifdef __cplusplus
extern "C" {
#endif
//在此处定义函数
#ifdef __cplusplus
}
#endif
这是为了在c++中引用c的库函数,才这样定义的。因为c++的编译器会对函数名和变量名做一些修正,如果也对c中的函数名和变量名也做修正,就会出现上述问题。这样定义后,c++编译器知道这是c中的函数名和变量名,不会对它们做修正,就可以正常使用了。
__cplusplus一般是用来判断用的是c还是c++编译器的。
#ifdef __cplusplus
extern "C" {
#endif
//在此处定义函数
#ifdef __cplusplus
}
#endif
这是为了在c++中引用c的库函数,才这样定义的。因为c++的编译器会对函数名和变量名做一些修正,如果也对c中的函数名和变量名也做修正,就会出现上述问题。这样定义后,c++编译器知道这是c中的函数名和变量名,不会对它们做修正,就可以正常使用了。
__cplusplus一般是用来判断用的是c还是c++编译器的。
标签: extern "C"
订阅 博文 [Atom]