c++ - 是否还需要 extern "C"才能将 Cpp 文件中使用的全局变量链接到 cfile 中定义的变量?

标签 c++ c extern

将 Cpp 文件中使用的全局变量链接到 c 文件中定义的变量是否也需要 extern "C"?

它用于链接来自 C++ 文件的函数,该函数在 C 文件中引用,因为 C++ 文件中函数名称的名称重整。 C编译器是否也会更改变量的名称??

最佳答案

Is extern "C" required also for linking global variables used in Cpp file to the one defined in a c file?

便携,是的。

您可能会发现省略 extern "C" 对您的编译器有效(例如,GCC,它不会在全局命名空间中破坏 C++ 变量名称),但这不是您可以做到的依赖于所有编译器。

Does the C compiler also changes the name of variables??

这取决于编译器(具体来说,取决于它使用的 ABI)。语言标准没有指定语言级名称如何映射到链接器符号,因此不同的编译器可以使用不同的名称修改方案。

关于c++ - 是否还需要 extern "C"才能将 Cpp 文件中使用的全局变量链接到 cfile 中定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938862/

相关文章:

c++在命名空间中共享变量时出现重复符号链接(symbolic link)器错误

使用死亡钻石进行 C++ 打印

c++ - Node C++ 插件 - 当类型化数组 (Float32Array) 作为参数传递时,如何访问它?

c - 是否有适用于 Windows 的开源 C 可视化调试器?

C: 无法使用 scanf() 接收输入

c - Linux 上的汇编编译器。纳斯姆还是AS?

从程序集中调用 libc 函数

c++ 全局变量未在此范围内声明

c++ - 让复制构造函数进行浅复制不是很糟糕吗?

C++ 11 委托(delegate)构造函数纯虚方法和函数调用——危险?