/Zc:forScope (Forcer la conformité à la portée de la boucle for)
Utilisé pour implémenter le comportement C++ standard des boucles for avec les extensions Microsoft (/Ze)./Zc:forScope est activé par défaut.
/Zc:forScope[-]
Notes
Le comportement standard consiste à laisser l'initialiseur d'une boucle for sortir de la portée après la boucle for.Sous /Za, /Ze (Désactiver les extensions de langage), l'initialiseur de la boucle for reste dans la portée jusqu'à la fin de la portée locale.
Le code suivant compilera sous /Ze, mais pas sous /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
}
Si vous utilisez /Zc:forScope-, vous obtiendrez un avertissement (désactivé par défaut) si une variable est dans la portée à cause d'une déclaration qui a été effectuée dans une portée précédente.Pour illustrer cela, retirez les caractères // dans le code ci-dessus pour déclarer int i.
Vous pouvez modifier le comportement à l'exécution de /Zc:forScope avec le pragma conform.
Si vous utilisez /Zc:forScope- dans un projet avec un fichier .pch existant, /Zc:forScope- est ignorée (avec un avertissement) et la compilation se poursuit avec les fichiers .pch existants.Si vous souhaitez générer un nouveau fichier .pch, utilisez /Yc (Créer un fichier d'en-tête précompilé).
Pour plus d'informations sur les problèmes de conformité avec Visual C++, consultez Problèmes de compatibilité et de compatibilité dans Visual C++.
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet.Pour plus d'informations, consultez Modification des paramètres d'un projet.
Cliquez sur le dossier C/C++.
Cliquez sur la page de propriétés Langue.
Modifiez la propriété Conformité forcée dans la portée d'une boucle For.
Pour définir cette option du compilateur par programmation
- Consultez ForceConformanceInForLoopScope.