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)
我相信这一切都归结为3.5计划和联系:
1)程序由一个或多个链接在一起的翻译单元(第2章)组成.翻译单元由一系列声明组成.
translation-unit:
declaration-seq opt
在语法描述之后,您将找到声明-seq中允许的内容以及每个声明中允许的内容.可以看出,翻译单元级别不允许使用常规语句.