现象:
我们在编译C的工程时,有时候会遇到一个函数fun()的原型在x.c文件里,x.h的头文件里面也做了函数的声明,但是在其他的y.c文件里#include “x.h”,并且调用fun()的时候,会提示找不到函数原型。
原因:
因为y.c里面有使用c++的代码或者调用了c++的代码,所以编译器会使用c和c++混合编译。
解决方法:
在x.h的头文件里使用下面的定义方式。
#ifdef __cplusplus
extern "C" {
#endif
// 自己的代码写在此处
#ifdef __cplusplus
}
#endif
关键字:extern “C” 表示编译生成的内部符号名使用C语言的约定。