/Zc:forScope (強制 for 迴圈範圍中的一致性)
用來搭配 Microsoft 擴充功能 (/Ze) 實作 for 迴圈的標準 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 的執行階段行為。
如果在具有現有 .pch 檔的專案中使用 /Zc:forScope-,會忽略 /Zc:forScope- (有警告),且編譯會使用現有的 .pch 檔案繼續。 如果您想要產生新的 .pch 檔案,請使用 /Yc (建立先行編譯標頭檔)。
如需 Visual C++ 一致性問題的詳細資訊,請參閱非標準行為。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資訊,請參閱 使用專案屬性。
按一下 [C/C++] 資料夾。
按一下 [語言] 屬性頁。
修改 [強制在 For 迴圈範圍中一致] 屬性。