【发布时间】:2010-04-23 01:41:03
【问题描述】:
以下是如何工作的?
#include <limits>
int main()
{
const int* const foo = &std::numeric_limits<int> ::digits;
}
我的印象是,为了获取static const-ant 成员的地址,我们必须在某些翻译单元中物理定义它,以取悦链接器。也就是说,在查看此 TU 的预处理代码后,我找不到 digits 成员(或任何其他相关成员)的外部定义。
我在两个编译器(VC++ 10 和 g++ 4.2.4)上对此进行了测试,并从两者中得到了相同的结果(即,它可以工作)。链接器是否会自动链接到定义了这些东西的目标文件,还是我在这里遗漏了一些明显的东西?
【问题讨论】:
标签: c++ static constants definition linkage