考虑以下两种 C++ 标头案例:
情况1:
class Test {
public:
static int TEST_DATA[];
};
int Test::TEST_DATA[] = { 1, 2, 3, 4 };
案例二:
class Test {
public:
static int const TEST_DATA[];
};
int const Test::TEST_DATA[] = { 1, 2, 3, 4 };
后一种情况下的 const 仅用于自我强加的编译时检查,还是会影响 Mac/Linux/Windows 上的共享库布局?
更新:根据答案,编译器可能会将 const 内容放在只读页面上。Windows 上的 Visual C++ 或 Mac 或 Linux 上的 GCC是否实际上将 const 数据放在只读页面上?也许我测试了错误的方式,但在英特尔的 Mac 上,const 版本的元素似乎是可写的。