3

当我尝试使用 g++ 编译以下内容时:

const int zero;

int main()
{
  return 0;
}

我收到一个关于uninitialized const 'zero'. 我认为全局变量默认初始化为 0 [1] ?为什么这里不是这种情况?
VS 编译得很好。

[1] 例如,参见https://stackoverflow.com/a/10927293/331785

4

2 回答 2

6

我的 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 限定类型的对象,除非该类型具有用户声明的默认构造函数。可以通过提供初始化程序来修复无法编译的代码...

于 2013-01-28T18:41:01.130 回答
0

G++ 要求您在定义期间初始化常量。

于 2013-01-28T18:52:56.593 回答