我对尝试编译的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/

10-09 06:02