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++编译器的。

标签:


评论: 发表评论

订阅 博文评论 [Atom]





<< 主页

This page is powered by Blogger. Isn't yours?

订阅 博文 [Atom]