有没有一个C++版本在循环结束后将在for循环初始化中声明的变量保留在作用域中
Was there ever a version of C++ that kept a variable declared in the initialization of a for loop in scope after the loop ended?
例如:
for (int i = 0; i < 10; i++) {
//Do something with i
}
cout << i;
这会有效吗?我正试图让15年前的c++在现代(如果你考虑Visual Studio 2008现代)IDE中编译,但它抱怨这样的事情。
这是编译器特有的功能(即语言扩展)。要在Visual C++中"允许"它,您需要设置/Zc:forScope-
标志或/Ze
标志。设置此标志可以使语言扩展允许for
循环中定义的变量的范围扩展到该循环之外(但在其他编译器中不一定有效)。
是的,这是早期Microsoft编译器中的一个错误。解决方法很简单:只需将循环控制变量的声明移动到循环之外。
for (int i = 0; i < 10; i++) {
}
cout << i;
成为
int i;
for (i = 0; i < 10; i++) {
}
cout << i;
不,从来没有这样的C++版本。在C++语言的所有版本中,此类变量的作用域都明确限制在循环中。
每当您看到这样的循环变量的范围扩展到循环之外时,它都是编译器中的一个错误(就像旧版本的Microsoft编译器中的情况一样)。
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- C++ 制作/命名不初始化的向量(在 while 循环中)
- 有没有办法使用输入的维度初始化 2d 数组中的所有项目而不循环C++?
- C++ 在循环中添加计数器变量并再次初始化其值
- C++,每个循环初始化一个新的静态变量
- 在循环中显示不同值的初始化数组
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- 查询有关循环初始化,条件和增量的查询
- 在循环初始化中使用带有静态的 constexpr
- C++循环初始化的奇怪行为
- 括号内用于循环初始化
- 用于使用两种不同变量类型的循环初始化
- 有没有一个C++版本在循环结束后将在for循环初始化中声明的变量保留在作用域中
- 如何在C++中使用 for 循环初始化字符串向量的向量
- 在for循环初始化语句中声明未命名结构体
- 使用 memset 而不是 for 循环初始化 int** 时出现分段错误
- 在for循环初始化时挂起很奇怪
- for 循环初始化变量范围在 C++、Java、C# 之间
- 在c++中使用for循环初始化一系列数组
- For循环初始化