Share via


/Zc:forScope (Forcer la conformité à la portée de la boucle for)

Mise à jour : novembre 2007

Permet d'implémenter le comportement C++ standard pour les The for Statement boucles avec des extensions Microsoft (/Za, /Ze (Désactiver les extensions de langage)). /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 Compatibility and Compliance Issues in Visual C++.

Pour définir cette option du compilateur dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, consultez Modification des paramètres d'un projet.

  2. Cliquez sur le dossier C/C++.

  3. Cliquez sur la page de propriétés Langue.

  4. Modifiez la propriété Conformité forcée dans la portée d'une boucle For.

Pour définir cette option du compilateur par programme

Voir aussi

Référence

/Zc (Conformité)

/Za, /Ze (Désactiver les extensions de langage)