使用Extern关键字

时间:2012-05-22 18:04:17

标签: c++ extern

我熟悉extern关键字,它用于声明某个其他文件中存在的变量,但以下语句是什么意思?

extern "C" const IMAGE_DOS_HEADER __ImageBase;

2 个答案:

答案 0 :(得分:5)

这意味着__ImageBase全局变量使用C linkage,并且其名称应为mangled,使用C而不是C ++的规则。

编辑Raymond Chen最近发布的an article恰好证明了我原来的答案是完全错误的:extern "C"没有禁用< / em> name mangling,只有更改用于执行它的规则。 C名称也可能被破坏。

答案 1 :(得分:1)

这意味着不要破坏__ImageBase之后的符号名extern "C"。简而言之,它确保您可以在C ++代码中使用该变量。

extern "C"指定要应用的链接。简而言之,链接规范 它告诉C ++编译器将C类型的链接应用于后面的符号。

好读:
Using extern to Specify Linkage
How to mix C and C++