是.
如果你有C代码的控制权,那么在你的C头文件中你应该有:
#ifdef __cplusplus
extern "C" {
#endif
// normal header stuff here
#ifdef __cplusplus
};
#endif
Run Code Online (Sandbox Code Playgroud)
这样,当C和CPP代码文件都包含它们时,它们可以被正确解释.
如果您通过标题在C++中包含C代码,并且它不包含上面的代码,并且您没有足够的控制权来进行必要的修改,请务必使用例如
extern "C" {
#include "some_c_header.h"
};
Run Code Online (Sandbox Code Playgroud)
请注意,您也可以将其用作声明的修饰符,例如:
extern "C" void someFunction();
Run Code Online (Sandbox Code Playgroud)
请注意,C++具有导入C功能的这种机制.C没有一个用于导入C++,并且尝试在C编译单元中包含C++代码将很快以一堆错误消息结束.这样做的一个结果是你的主要功能需要是C++.