为什么gcc不能编译未初始化的全局const?

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/

Ant*_*nko 6

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