见过好多次,这里记录一下
C++允许同名函数存在,所以编译器会对函数名重新编码。C++代码包含C语言的头文件时,重新编码名字与C语言库中的原函数名不一致,结果造成找不到函数的情况。为了让C语言实现的函数在C++中可以调用,需要在头文件中加点东西:
#ifdef __cplusplus
extern "C"{
#endif
...
...
#ifdef __cplusplus
}
#endif
这个结构表示如果在C++中调用这里的函数,编译器不能对函数名进行重新编码。两个大括号之间可以添加C代码。