当我尝试用g ++编译以下代码时:
const int zero;
int main()
{
return 0;
}
我收到有关uninitialized const 'zero'
的错误消息。我认为全局变量默认初始化为0 [1]?为什么不是这种情况呢?
VS编译这个罚款。
答案 0 :(得分:6)
我的gcc稍微冗长一点:
$ g++ zeroconst.c
zeroconst.c:1:11: error: uninitialized const ‘zero’ [-fpermissive]
我们看到-fpermissive
选项允许编译它。
在uninitialized const上查看此问题以获取对C ++标准的引用(问题是C ++特定的)。
如GCC wiki所述:
根据C ++标准的规定(8.5 [decl.init],C ++ 03中的第9段, C ++ 0x)中的第6段,G ++不允许使用const限定类型的对象 默认初始化,除非该类型具有用户声明的默认值 构造函数。无法编译的代码可以通过提供一个来修复 初始化...
答案 1 :(得分:0)
G ++要求您在定义期间初始化常量。