c++ - 未声明的变量在 C++ 中合法吗?

标签 c++ visual-c++ undeclared-identifier

我完全被 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/

相关文章:

c++ - constexpr 模板参数怪异

c++ - 我怎样才能覆盖纯虚方法,但仍然强制子类实现相同的方法?

visual-c++ - 如何以编程方式获取已安装程序的列表

c - for循环程序语法错误

ios - 在一个 .m 文件中无法识别 Google Analytics

c - 包含后未声明的方法

c++ - 从一个 C++ 程序中调用另一个程序中的方法(进程间通信)

c++ - 追踪水平面

visual-c++ - 您如何使用OpenCV进行2d傅立叶变换?

在代码中保留断言的 C++ 测试套件