/Zc:forScope (強制 for 迴圈範圍中的一致性)

用來實作含 Microsoft 副檔名 (/ Ze) 之 迴圈的標準 C + + 行為。 /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 Pragma,修改 /Zc:forScope 的執行階段行為。

如果您在專案中使用 /Zc:forScope- 配合現有的 .pch 檔,則會 (附上警告) 忽略 /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 (停用語言擴充功能)