【问题标题】:scope of variable outside for loopfor循环外的变量范围
【发布时间】: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++ 中被忽略了吗?谢谢!

【问题讨论】:

    标签: visual-c++


    【解决方案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方式的错误。
    • 您之前提出的问题非常有见地,感谢您的链接!也许您是对的,即使我必须返回并修复其他一些由此产生的错误,进行搜索和替换可能也会减少工作量。
    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 2011-05-27
    • 2014-08-05
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多