/Zc:forScope (Übereinstimmung in for-Schleifenbereich erzwingen)
Wird zum Implementieren des standardmäßigen C++-Verhaltens für for-Schleifen mit Microsoft-Erweiterungen (/Ze) verwendet./Zc:forScope ist standardmäßig aktiviert.
/Zc:forScope[-]
Hinweise
Standardmäßig verlässt der Initialisierer einer for-Schleife nach der for-Schleife seinen Gültigkeitsbereich.Unter /Za, /Ze (Spracherweiterungen deaktivieren) bleibt der Initialisierer der for-Schleife gültig, bis die lokale Schleife endet.
Der folgende Code kann unter /Ze, nicht jedoch unter /Za kompiliert werden:
// 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, wird eine (standardmäßig deaktivierte) Warnung angezeigt, wenn eine Variable aufgrund einer Deklaration aus einer vorherigen Schleife gültig ist.Um dies zu veranschaulichen, entfernen Sie die Zeichen // im obigen Code, um int i zu deklarieren.
Sie können das Laufzeitverhalten von /Zc:forScope mit dem konform-Pragma ändern.
Wenn Sie /Zc:forScope- in einem Projekt mit einer vorhandenen PCH-Datei verwenden, wird /Zc:forScope- ignoriert (mit Warnmeldung), und die Kompilierung wird mit den vorhandenen PCH-Dateien fortgesetzt.Wenn Sie eine neue PCH-Datei erstellen möchten, verwenden Sie /Yc (Datei der vorkompilierten Header erstellen).
Weitere Informationen über Konformitätsprobleme mit Visual C++ finden Sie unter Kompatibilitäts- und Kompatibilitäts-Probleme in Visual C++.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts.Details finden Sie unter Ändern von Projekteinstellungen.
Klicken Sie auf den Ordner C/C++.
Klicken Sie auf die Eigenschaftenseite Sprache.
Ändern Sie die Eigenschaft Übereinstimmung in einem For-Schleifenbereich erzwingen.
So legen Sie diese Compileroption programmgesteuert fest
- Weitere Informationen finden Sie unter ForceConformanceInForLoopScope.