当我尝试使用 g++ 编译以下内容时:
const int zero;
int main()
{
return 0;
}
我收到一个关于uninitialized const 'zero'
。我认为全局变量默认初始化为 0 [1] ?为什么这里的情况不是这样呢?
VS 编译得很好。
[1] 例如,参见https://stackoverflow.com/a/10927293/331785 https://stackoverflow.com/a/10927293/331785
我的 gcc 稍微详细一些:
$ g++ zeroconst.c
zeroconst.c:1:11: error: uninitialized const ‘zero’ [-fpermissive]
我们看到-fpermissive
选项将允许编译。
请参阅此问题未初始化常量 https://stackoverflow.com/questions/8092670/uninitialized-const对 C++ 标准的参考(问题是 C++ 特定的)。
正如引用于GCC wiki http://gcc.gnu.org/wiki/VerboseDiagnostics#error:_uninitialized_const_.27d.27_.5B-fpermissive.5D.2C_note:_.27const_class_D.27_has_no_user-provided_default_constructor:
根据 C++ 标准的规定(C++03 中的 8.5 [decl.init],第 9 段,
C++0x 中的第 6 段),G++ 不允许 const 限定类型的对象
除非该类型具有用户声明的默认值,否则默认初始化
构造函数。无法编译的代码可以通过提供来修复
初始化程序...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)