未声明的变量在C++中是否合法?

Vil*_*lx- 0 c++ visual-c++ undeclared-identifier

我对我正在尝试编译的一些代码感到困惑.编译器给了我几十个"未声明的标识符"错误.它们似乎都是本地循环变量,如下所示:

for ( i = 0; i < 100; i++ )
Run Code Online (Sandbox Code Playgroud)

我可以很容易地解决它,但我不明白该代码如何为其他人编译.这些文件已经很久没有被触及过了.

VC++是否有某种编译器标志会自动假定int未声明的变量?我找不到它.是什么赋予了?


复制问题的最小完整代码示例:

for ( int i = 0; i < 100; i++ );
for ( i = 0; i < 100; i++ );
Run Code Online (Sandbox Code Playgroud)

egr*_*nin 5

该问题与声明中for声明的变量范围有关.该标准将此范围定义为仅限于for循环本身.但是一些编译器支持用于将此范围扩展到封闭集团的非标准遗留扩展.

要使用MSVC编译此类代码,请添加编译器开关/ Ze

有关详细信息,请参阅MSDN文档.

下面的评论建议/ Zc:forScope,但根据这个MSDN页面,这是不对的.

顺便说一句,G ++有一个类似的-fno-for-scope开关.