当我尝试使用 g++ 编译以下内容时:
const int zero;
int main()
{
return 0;
}
我收到一个关于uninitialized const 'zero'
. 我认为全局变量默认初始化为 0 [1] ?为什么这里不是这种情况?
VS 编译得很好。
当我尝试使用 g++ 编译以下内容时:
const int zero;
int main()
{
return 0;
}
我收到一个关于uninitialized const 'zero'
. 我认为全局变量默认初始化为 0 [1] ?为什么这里不是这种情况?
VS 编译得很好。
我的 gcc 稍微冗长一些:
$ g++ zeroconst.c
zeroconst.c:1:11: error: uninitialized const ‘zero’ [-fpermissive]
我们看到该-fpermissive
选项将允许编译。
有关C++ 标准的参考,请参阅有关未初始化 const的这个问题(问题是 C++ 特定的)。
正如GCC wiki所引用的:
根据 C++ 标准的要求(8.5 [decl.init],C++03 中的第 9 段,C++0x 中的第 6 段),G++ 不允许默认初始化 const 限定类型的对象,除非该类型具有用户声明的默认构造函数。可以通过提供初始化程序来修复无法编译的代码...
G++ 要求您在定义期间初始化常量。