2

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

extern "C" const IMAGE_DOS_HEADER __ImageBase;
4

2 回答 2

5

这意味着__ImageBase全局变量使用C 链接,并且应该使用 C 而不是 C++ 的规则来修改其名称。

编辑:恰好Raymond Chen最近发表了一篇文章,证明我的原始答案是完全错误的:extern "C"不禁名称修改,它只会更改用于执行它的规则。C 名称也可以被破坏。

于 2012-05-22T18:05:51.677 回答
1

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

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

好读物:
使用 extern 指定链接
如何混合 C 和 C++

于 2012-05-22T18:05:44.480 回答