你应该使用extern" C"在只有定义的文件中?

时间:2017-06-10 04:42:14

标签: c++ c extern-c

拥有:

是没有意义的
#ifdef __cplusplus
  extern "C" {
#endif

// code...

#ifdef __cplusplus
  }
#endif

其中"代码......"只是一堆定义和typedef(没有包括等)?

2 个答案:

答案 0 :(得分:2)

原则上,在您的特定情况下(无变量或函数声明),extern "C"毫无意义。

在实践中,它使代码更具可读性(显示定义C ++友好界面的意图)并且不那么脆弱。一些开发人员(也许你)可能(在几个月内)在其中添加其他声明。

答案 1 :(得分:1)

这取决于你打算如何使用标题。

如果类型和值有效并且在C和C ++中具有相同的含义,并且您打算在编译为C的一些编译单元和编译为C ++的其他编译单元中使用它们,那么您需要使用extern "C"在编译为C ++时。否则,您的C ++代码和C代码无法互操作。

如果编译单元包含头文件,那么只能将其构建为C,如C ++,但不能同时构建为两者,那么您就不需要extern "C"。您可以使用特定于您所选语言的功能。