/Zc:forScope (Forcer la conformité à la portée de la boucle for)
Permet d'implémenter un comportement C++ standard pour les boucles for avec les extensions Microsoft (/Ze).
Syntaxe
/Zc :forScope[-]
Notes
Le comportement standard consiste à laisser l’initialiseur d’une for
boucle sortir de l’étendue après la for
boucle. Sous /Zc :forScope- et /Ze, l’initialiseur de la boucle reste dans l’étendue for
jusqu’à ce que l’étendue locale se termine.
L’option /Zc :forScope est activée par défaut. /Zc :forScope n’est pas affecté lorsque l’option /permissive- est spécifiée.
L’option /Zc:forScope- est déconseillée et sera supprimée dans une version ultérieure. L’utilisation de /Zc:forScope- génère l’avertissement D9035 de désapprobation.
Le code suivant est compilé sous /Ze , mais pas sous /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
}
Si vous utilisez /Zc:forScope-, l’avertissement C4288 (désactivé par défaut) est généré si une variable est dans la portée en raison de l’existence d’une déclaration dans une portée précédente. Pour illustrer ceci, supprimez les caractères //
dans l’exemple de code pour déclarer int i
.
Vous pouvez modifier le comportement au moment de l’exécution de /Zc:forScope en utilisant le pragma conform .
Si vous utilisez /Zc:forScope- dans un projet contenant déjà un fichier .pch, un avertissement est généré, /Zc:forScope- est ignoré et la compilation continue en utilisant 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é dans Visual C++, consultez Nonstandard Behavior.
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 Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Langage.
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.
Voir aussi
/Zc (Conformité)
/Za, /Ze (Désactiver les extensions de langage)