【发布时间】:2014-11-15 20:23:11
【问题描述】:
我对@987654321@ 完全感到困惑,我正在尝试编译。编译器给了我几十个“未声明的标识符”错误。它们似乎都是像这样的局部循环变量:
for ( i = 0; i < 100; i++ )
我可以轻松修复它,但我不明白该代码是如何为其他人编译的。而且这些文件已经很久没有被动过了。
VC++ 是否有某种编译器标志自动假定int 用于未声明的变量?我找不到它。什么给了?
复制问题的最小完整代码示例:
for ( int i = 0; i < 100; i++ );
for ( i = 0; i < 100; i++ );
【问题讨论】:
-
这段代码打算用哪个编译器编译?某些较旧的不符合标准的编译器(尤其是 Visual Studio 6)的循环中声明的变量的范围会扩展到循环体之外,直到封闭块的末尾。所以你可以写
for (int i = 0; i < 10; ++i) {...} i = 42;在你引用的那个文件中,变量iK首先在第1784行声明和使用,然后在循环体之后重用。 -
@IgorTandetnik - 我想你刚刚找到它......代码最初是用 VC7 编译的(不确定现在是哪个 Visual Studio)。我希望VS2013也能编译。
-
尝试使用
/Zc:forScope-构建 -
我不认为
/Zc:forScope是正确的(见我的回答)。 -
@egrunin:我也不这么认为——而我建议的
/Zc:forScope-(末尾有一个减号)很可能是。 Live example
标签: c++ visual-c++ undeclared-identifier