拥有:
是没有意义的#ifdef __cplusplus
extern "C" {
#endif
// code...
#ifdef __cplusplus
}
#endif
其中"代码......"只是一堆定义和typedef(没有包括等)?
答案 0 :(得分:2)
原则上,在您的特定情况下(无变量或函数声明),extern "C"
毫无意义。
在实践中,它使代码更具可读性(显示定义C ++友好界面的意图)并且不那么脆弱。一些开发人员(也许你)可能(在几个月内)在其中添加其他声明。
答案 1 :(得分:1)
这取决于你打算如何使用标题。
如果类型和值有效并且在C和C ++中具有相同的含义,并且您打算在编译为C的一些编译单元和编译为C ++的其他编译单元中使用它们,那么您需要使用extern "C"
在编译为C ++时。否则,您的C ++代码和C代码无法互操作。
如果编译单元包含头文件,那么只能将其构建为C,如C ++,但不能同时构建为两者,那么您就不需要extern "C"
。您可以使用特定于您所选语言的功能。