我正在尝试使用几年前编写的程序,并在以前版本的MS VC ++中编译(我使用的是VC ++ 2008)。有很多(数百个)实例类似于以下内容:
int main () {
int number = 0;
int number2 = 0;
for (int i = 0; i<10; i++) {
//something using i
}
for (i=0; i<10; i++) {
//something using i
}
return 0;
}
我不确定它最初是在哪个版本中编译的,但它确实有效。我的问题是:它是如何工作的?我的理解是i变量应该只定义用于第一个循环。当我尝试编译它现在我得到错误“'我':未声明的标识符”为开始第二个循环的行,这是有道理的。在以前版本的VC ++中,这只是被忽略了吗?谢谢!
答案 0 :(得分:5)
早期版本的MSVC有这种“错误”,因为它将这些变量泄露到封闭范围内。
换句话说,它处理了:
for (int i = 0; i<10; i++) {
// something using i
}
与:
相同int i;
for (i = 0; i<10; i++) {
// something using i
}
请参阅this question的答案。我询问了一个奇怪的宏定义,以获取更多详细信息。