/Zc:forScope(强制 for 循环范围中的一致性)

用于实现标准 C++ 行为用于 for 循环,其具有 Microsoft 扩展 (/Ze)。 默认情况下,/Zc:forScope 处于打开状态。

/Zc:forScope[-]

备注

标准行为是使 for 循环的初始值设定项在 for 循环之后超出范围。 在 /Za、/Ze(禁用语言扩展) 下,for 循环的初始值设定项保持在范围内,直到局部范围结束。

下面的代码将在 /Ze(而不是 /Za)下进行编译:

// zc_forScope.cpp
// compile with: /Zc:forScope- /Za
// C2065 expected
int main() {
   // Uncomment the following line to resolve.
   // int i;
   for (int i =0; i < 1; i++)
      ;
   i = 20;   // i has already gone out of scope under /Za
}

在您使用 /Zc:forScope- 时,如果变量因为存在一个在以前的范围内所做的声明而处在范围内,您将得到警告(默认情况下处于关闭状态)。 为了说明这点,请移除上面代码中的 // 字符以声明 int i。

可以使用 conform 杂注修改 /Zc:forScope 的运行时行为。

如果在具有现有 .pch 文件的项目中使用 /Zc:forScope-,则忽略 /Zc:forScope-(伴有警告),并继续用现有的 .pch 文件进行编译。 如果需要生成新的 .pch 文件,请使用 /Yc(创建预编译的头文件)

有关使用 Visual C++ 时的一致性问题的更多信息,请参见 Compatibility and Compliance Issues in Visual C++

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开该项目的**“属性页”**对话框。 有关详细信息,请参见修改项目设置

  2. 单击**“C/C++”**文件夹。

  3. 单击**“语言”**属性页。

  4. 修改**“强制 For 循环范围中的一致性”**属性。

以编程方式设置此编译器选项

请参见

参考

/Zc(一致性)

/Za、/Ze(禁用语言扩展)