下面注释掉的表达式不编译,因为它在全局范围内。但是,在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中允许的内容,以及每个宣言允许的内容。可以看出,在翻译单元级别不允许使用常规语句。