在c++中,全局作用域中只允许"表达式"初始化全局对象.我在哪里可以在标准中找到这个

In c++, `expressions` are allowed in global scope only to initialize global objects. Where can I find this in the Standard?

本文关键字:quot 全局 在哪里 标准 对象 c++ 初始化 表达式 作用域      更新时间:2023-10-16

下面注释掉的表达式不编译,因为它在全局范围内。但是,在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);
} 

我相信这一切都将归结为3.5程序和链接

1)程序由一个或多个连接在一起的翻译单元(第2条)组成。翻译单元由声明序列
翻译单位:
申报seq opt

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