我完全被 some code 搞糊涂了我正在尝试编译。编译器给我几十个“未声明的标识符”错误。它们似乎都是这样的局部循环变量:
for ( i = 0; i < 100; i++ )
我可以很容易地修复它,但我不明白该代码是如何为其他人编译的。这些文件已经很久没有被触及了。
是否有某种 VC++ 编译器标志可以自动为未声明的变量假定 int
?我找不到它。给了什么?
复制问题的最小完整代码示例:
for ( int i = 0; i < 100; i++ );
for ( i = 0; i < 100; i++ );
最佳答案
问题与for
语句中声明的变量范围有关。该标准将此范围定义为仅限于 for
循环本身。但是一些编译器支持用于将此范围扩展到封闭集团的非标准遗留扩展。
要使用 MSVC 编译此类代码,请添加编译器开关/Ze
参见 MSDN docs了解详情。
下面的评论建议/Zc:forScope,但根据 this MSDN page这是不对的。
顺便说一下,G++ 有一个类似的 -fno-for-scope
转变。
关于c++ - 未声明的变量在 C++ 中合法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26950331/