Bar*_*uch 3 gcc g++ global-variables
当我尝试使用g ++编译以下内容时:
const int zero;
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误uninitialized const 'zero'.我认为全局变量默认初始化为0 [1]?为什么不是这种情况?
VS编译这个罚款.
[1]例如,请参阅/sf/answers/764910541/
我的gcc稍微冗长一点:
$ g++ zeroconst.c
zeroconst.c:1:11: error: uninitialized const ‘zero’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
我们看到该-fpermissive选项将允许编译.
请参阅有关未初始化const的此问题以获取对C++标准的引用(问题是C++特定的).
正如GCC wiki所述:
根据C++标准(8.5 [decl.init],C++ 03中的第9段,C++ 0x中的第6段),G ++不允许对const限定类型的对象进行默认初始化,除非该类型具有用户声明的默认构造函数.无法编译的代码可以通过提供初始化程序来修复...