c++ - 在循环外使用for循环变量是错误的吗?

标签 c++ compiler-errors scope

例如,考虑这段代码:

#include <iostream>

int main() {
    for( int i=0; i<10; i++ );

    // USING i OUTSIDE for LOOP
    std::cout << i;    
    return 0;
}

当我在 g++ 下编译它时,它说 “'i' 的名称查找已更改为 ISO 'for' 范围,(如果您使用 '-fpermissive' G++ 将接受您的代码)”

我认为问题在于范围界定。变量 i 在范围内声明并在范围外使用。当我要求时,我们的老师允许这样做。 错了吗?

最佳答案

ISO 'for' 范围界定 指的是 C++ 标准。在旧标准(或者更可能是支持它的旧编译器)中,循环变量的范围是包含 for 语句的范围。但是,这发生了变化,这就是您收到该错误的原因。

关于提及 -fpermissive 的此类错误的一般提示:导致这些消息的结构通常(很长)已过时,并且被旧标准或旧编译器允许。因此,存在依赖于过时行为的旧代码。您不应该编写需要该选项的新代码;它更像是一种快速修复,可以让遗留代码快速在新的 GCC 版本上运行。

关于c++ - 在循环外使用for循环变量是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352661/

相关文章:

c++ - <</>> 运算符重载和输入/输出函数之间的区别

c# - 当另一个应用程序关闭时,如何调试为什么应用程序无异常地死机?

Javascript变量在一个函数中设置,但在另一个函数中未定义

c - 当其他宏引发名称冲突时,如何使用其他宏定义宏

javascript - 除了变量定义之外,javascript 中是否需要 "this"

c++ - 复制省略和右值引用

c++ - 应该如何阅读堆缓冲区溢出错误消息?

c++ - 模板函数特化默认

c++ - CPPUTest 的 Eigen ?

string - 如何保留Java中的100万个数字?