我刚刚得到一些使用extern"C"的C代码来声明这样的外部函数:
extern "C" void func();
Run Code Online (Sandbox Code Playgroud)
这是有效的C吗?我在这一行收到错误,但我不确定是不是因为这个或其他原因.
Ada*_*eld 30
不,它无效C.它只应在C++代码中用于引用C代码中定义的函数.在extern "C"应该以包围ifdef __cplusplus/ #endif块:
// For one function
#ifdef __cplusplus
extern "C"
#endif
void func();
// For more than one function
#ifdef __cplusplus
extern "C"
{
#endif
void func1();
void func2();
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
Jen*_*cke 12
这是一种C++表示法,用于告诉编译器/链接器使用C调用标准.
通常该行包含在预处理器语句中.
#ifdef __cplusplus
extern "C" {
#endif
// stuff
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)