c++ - #ifdef __cplusplus extern "C"{ #endif 的最佳位置在哪里

标签 c++ c include

我想知道放在哪里比较好

#ifdef __cplusplus
extern "C" {
#endif

在 C 头文件中。

在所有其他包含的开头或之后。为什么?

最佳答案

对此没有严格的规定,但要注意以下几点。

  1. 一般原则是每个头文件都自行处理(并且是自给自足的)。因此,根据这个原则,不需要将头文件包装在 extern“C”中,因为头文件中会有一个 extern“C”(如果需要的话)。因此,在当前文件中,您可以将它放在其他包含文件之后。
  2. 但是如果你确实有一大堆标题,你不想添加一个外部“C”,并且想通过一个单独的包含来提供,无论如何,继续把它们包装起来在文件宽外部“C”中。

只知道 extern "C"背后的想法是它使编译器生成 C 友好链接。否则,使用 C++ 编译器编译的代码会在使用 C 编译器编译的存档中寻找要链接的错位名称,但找不到它们。

关于c++ - #ifdef __cplusplus extern "C"{ #endif 的最佳位置在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16087451/

相关文章:

c - 传递 ‘function_name’ 的参数 1 使指针来自整数而不进行强制转换

c++ - 全局使用公共(public)变量

c++ - vector 迭代器覆盖运算符 ->

c++ - 如何创建一个根据概率选择数字的函数?

c - C 中的套接字编程无法在两台不同的 PC 上运行

c - setjmp/longjmp 和局部变量

c++ - 包含头文件的顺序是什么?

跨多个包含 block 的 Java 变量 - 无法解析变量

c++ - 使用可变参数模板计算用户定义类的内容

c++ - 如何设置正确的 vtkCamera 缩放系数?