STL Static-Const成员定义

时间:2010-04-23 01:41:03

标签: c++ static const definition linkage

以下工作原理如何?

#include <limits>

int main()
{
  const int* const foo = &std::numeric_limits<int> ::digits;
}

我的印象是,为了获取static const - ant成员的地址,我们必须在某个翻译单元中对其进行物理定义,以取悦链接器。也就是说,在查看此TU的预处理代码后,我找不到digits成员(或任何其他相关成员)的外部定义。

我在两个编译器(VC ++ 10和g ++ 4.2.4)上对此进行了测试,并得到了两者相同的结果(即,它可以工作)。链接器是否自动神奇地链接到定义了这个东西的目标文件,或者我错过了一些明显的东西?

1 个答案:

答案 0 :(得分:2)

那么,是什么让你认为定义了?您尝试获取地址成功的事实表明 已在某处定义。当然,它不需要驻留在您的翻译单元中,因此查看预处理器输出没有多大意义。