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