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

用于针对具有 Microsoft 扩展 ( /Ze ) 的for循环实现标准 C++ 行为。

语法

/Zc:forScope[-]

注解

标准行为是使 for 循环的初始值设定项在 for 循环之后超出范围。 在 /Zc:forScope- 和 /Ze下,for 循环的初始值设定项保持在范围内,直到局部范围结束

在默认情况下,/Zc:forScope 选项处于打开状态。 在指定 /permissive- 选项时,/Zc:forScope 不受影响

/Zc:forScope- 选项已弃用,并将从未来版本中删除。 使用 /Zc:forScope- 将生成弃用警告 D9035。

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

// zc_forScope.cpp
// compile by using: cl /Zc:forScope- /Za zc_forScope.cpp
// C2065, D9035 expected
int main() {
    // Compile by using cl /Zc:forScope- zc_forScope.cpp
    // to compile this non-standard code as-is.
    // Uncomment the following line to resolve C2065 for /Za.
    // int i;
    for (int i = 0; i < 1; i++)
        ;
    i = 20;   // i has already gone out of scope under /Za
}

使用 /Zc:forScope-时,如果变量由于在上一范围内所作的声明而处在范围内,则将生成警告 C4288(默认关闭)。 为了说明这点,请删除示例代码中用于声明 //int i字符。

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

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

有关 Visual C++ 中一致性问题的详细信息,请参阅 Nonstandard Behavior

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

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“语言”属性页。

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

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

另请参阅

/Zc(一致性)
/Za、/Ze(禁用语言扩展)