Max*_*yne 2 c++ scope compiler-errors
例如,考虑以下代码:
#include <iostream>
int main() {
for( int i=0; i<10; i++ );
// USING i OUTSIDE for LOOP
std::cout << i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我在g ++下编译它时,它说'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
我认为问题在于范围界定.变量i在范围内声明,并在其外部使用.当我问起时,我们的老师允许这样做.这是错的吗?
该"的"作用域ISO指的是C++标准.在旧标准(或者更可能是支持它的旧编译器)中,循环变量的范围是包含for语句的范围.但是,这改变了,这就是你得到这个错误的原因.
关于这种错误的一般提示--fpermissive:导致这些消息的构造通常(很久)已过时,并且被旧标准或旧编译器所允许.因此,存在依赖于过时行为的旧代码.您不应该编写需要该选项的新代码; 更快速地解决了在新GCC版本上运行遗留代码的问题.