在c ++中,仅在全局范围内允许`expressions`来初始化全局对象.我在哪里可以找到标准中的这个?

Joh*_*ane 2 c++ language-lawyer

下面注释掉的表达式无法编译,因为它位于全局范围内.但是在C++标准中我找到了与此限制相关的内容吗?我记得,只有全局范围内的表达式才能初始化全局对象.我已经查看了第5章表达式,但没有用.

#include <iostream>
//std::cout.setf(std::ios_base::hex, std::ios_base::basefield);


int main()
{
    std::cout.setf(std::ios_base::hex, std::ios_base::basefield);
} 
Run Code Online (Sandbox Code Playgroud)

Wer*_*nze 6

我相信这一切都归结为3.5计划和联系:

1)程序由一个或多个链接在一起的翻译单元(第2章)组成.翻译单元由一系列声明组成.
translation-unit:
declaration-seq opt

在语法描述之后,您将找到声明-seq中允许的内容以及每个声明中允许的内容.可以看出,翻译单元级别不允许使用常规语句.