下面注释掉的 expression 无法编译,因为它在全局范围内。但是在 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) A program consists of one or more translation units (Clause 2) linked together. A translation unit consists of a sequence of declarations.
translation-unit:
declaration-seq opt
按照该语法描述,您将找到声明序列 中允许的内容以及每个声明 中允许的内容。可以看出,翻译单元 级别不允许使用常规语句。
关于c++ - 在 c++ 中, `expressions` 只允许在全局范围内用于初始化全局对象。我在哪里可以在标准中找到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460505/