for循环外的变量范围
Posted
技术标签:
【中文标题】for循环外的变量范围【英文标题】:scope of variable outside for loop 【发布时间】:2010-10-14 16:50:41 【问题描述】:我正在尝试使用几年前编写并在以前版本的 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 变量应该只定义为在第一个循环中使用。当我现在尝试编译它时,我收到错误“'i':未声明的标识符”,用于开始第二个循环的行,这是有道理的。这只是在以前版本的 VC++ 中被忽略了吗?谢谢!
【问题讨论】:
【参考方案1】:早期版本的 MSVC 有这个“错误功能”,因为它将这些变量泄漏到封闭范围内。
换句话说,它处理了:
for (int i = 0; i<10; i++)
// something using i
同:
int i;
for (i = 0; i<10; i++)
// something using i
请参阅this question 的答案我询问了一个奇怪的宏定义,以了解更多详细信息。
【讨论】:
好的,谢谢。这就说得通了。不是很期待改变所有这些错误...... 也许是全局搜索并用for (int i =
替换 for (i =
?尽管这可能会给您带来other方式的错误。
您之前提出的问题非常有见地,感谢您的链接!也许您是对的,即使我必须返回并修复其他一些由此产生的错误,进行搜索和替换可能也会减少工作量。以上是关于for循环外的变量范围的主要内容,如果未能解决你的问题,请参考以下文章