是否还需要extern“C”来将Cpp文件中使用的全局变量链接到cfile中定义的变量?

时间:2015-01-14 08:49:13

标签: c++ c extern

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

它用于连接C ++文件中的函数,该文件在C文件中引用,因为C ++文件中的函数名称被修改了。 C编译器是否也更改了变量的名称?

2 个答案:

答案 0 :(得分:5)

  

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

Portly,是的。

您可能会发现遗漏extern "C"适用于您的编译器(例如,GCC,它不会破坏全局命名空间中的C ++变量名称),但这不是您可以做的事情依赖于所有编译器。

  

C编译器是否也改变了变量的名称?

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

答案 1 :(得分:0)

变量不需要它。外部" C"函数是必需的,因为在C ++中,可以为不同数量和类型的参数定义多次函数。每个函数名称包括编码形式的参数。但是这些变量不能重新定义,并且C和C ++中的名称相同(兼容)。