/Zc:forScope (Übereinstimmung in for-Schleifenbereich erzwingen)
Verwendet zum Implementieren von Standard-C++-Verhalten für for-Schleifen mit Microsoft-Erweiterungen(/Ze). Standardmäßig ist /Zc:forScope aktiviert.
/Zc:forScope[-]
Hinweise
Standardverhalten bedeutet, den Initialisierer einer for-Schleife nach der for-Schleife den Gültigkeitsbereich verlassen zu lassen. Unter /Za, /Ze (Spracherweiterungen deaktivieren) bleibt der Initialisierer der for-Schleife im Gültigkeitsbereich, bis der lokale Gültigkeitsbereich endet.
Der folgende Code wird unter /Ze, aber nicht unter /Za kompiliert:
// 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
}
Wenn Sie /Zc:forScope- verwenden, erhalten Sie eine Warnmeldung (standardmäßig deaktiviert), wenn eine Variable aufgrund einer Deklaration, die einem früheren Gültigkeitsbereich erfolgt ist, im Gültigkeitsbereich ist. Zur Demonstration entfernen Sie die Zeichen // in obigem Code, um int i zu deklarieren.
Sie können das Laufzeitverhalten von /Zc:forScope mit dem conform-Pragma ändern.
Wenn Sie /Zc:forScope- in einem Projekt mit einer vorhandenen .pch-Datei verwenden, wird /Zc:forScope- ignoriert (mit einer Warnmeldung), und die Kompilierung wird mit den vorhandenen .pch-Dateien fortgesetzt. Wenn Sie möchten, dass eine neue .pch-Datei generiert wird, verwenden Sie /Yc (Datei der vorkompilierten Header erstellen).
Weitere Informationen über Konformitätsprobleme mit Visual C++ finden Sie unter Nicht dem Standard entsprechendes Verhalten.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Arbeiten mit Projekteigenschaften.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite Sprache.
Ändern Sie die Eigenschaft Übereinstimmung in einem For-Schleifenbereich erzwingen.