以下是如何运作的?
我曾认为,为了获取静态常量成员的地址,我们必须在某个翻译单元中物理定义它,以便取悦链接器。然而,在查看此TU的预处理代码后,我没有找到digits成员(或任何其他相关成员)的外部定义。
我在两个编译器上进行了测试(VC++ 10和g++ 4.2.4),并从两者获得了相同的结果(即它起作用)。链接器是否自动地链接到定义这些内容的对象文件,还是我忽略了一些明显的东西?
#include <limits>
int main()
{
const int* const foo = &std::numeric_limits<int> ::digits;
}
我曾认为,为了获取静态常量成员的地址,我们必须在某个翻译单元中物理定义它,以便取悦链接器。然而,在查看此TU的预处理代码后,我没有找到digits成员(或任何其他相关成员)的外部定义。
我在两个编译器上进行了测试(VC++ 10和g++ 4.2.4),并从两者获得了相同的结果(即它起作用)。链接器是否自动地链接到定义这些内容的对象文件,还是我忽略了一些明显的东西?