我熟悉extern关键字,它用于声明某个其他文件中存在的变量,但以下语句是什么意思?
extern "C" const IMAGE_DOS_HEADER __ImageBase;
答案 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++ 强>