/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 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資訊,請參閱 修改專案設定。
按一下 [C/C++] 資料夾。
按一下 [語言] 屬性頁。
修改 [強制於 For 迴圈範圍中一致] 屬性。