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