/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 pragma 來修改 /Zc:forScope 的執行階段行為。
若在具備現有 .pch 檔的專案中使用 /Zc:forScope- ,會產生警告、忽略 /Zc:forScope- ,並使用現有的 .pch 檔案繼續編譯。 如果您想要產生新的 .pch 檔案,請使用 /Yc (建立先行編譯頭檔)。
如需 Visual C++ 中一致性問題的詳細資訊,請參閱 Nonstandard Behavior。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[語言] 屬性頁。
修改 [強制在 For 迴圈範圍中一致] 屬性。