Partager via


/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). /Zc:forScope est activé par défaut.

/Zc:forScope[-]

Notes

Le comportement standard consiste à laisser l'initialisateur d'une boucle for sortir de la portée après la boucle for. Sous /Za, /Ze (Désactiver les extensions de langage), l'initialisateur de la boucle for reste dans la portée jusqu'à ce que la portée locale se termine.

Le code suivant sera compilé 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 en raison d'une déclaration effectuée dans une portée précédente. Pour illustrer ceci, supprimez les caractères // dans le code ci-dessus pour déclarer int i.

Vous pouvez modifier le comportement au moment de l'exécution de /Zc:forScope à l'aide du pragma conform.

Si vous utilisez /Zc:forScope- dans un projet avec un fichier .pch existant, /Zc:forScope- est ignoré (avec un avertissement) et la compilation continue avec les fichiers .pch existants. Si vous voulez qu'un nouveau fichier .pch soit généré, 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 Comportement non standard.

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, voir Utilisation des propriétés de projet.

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

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

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

Pour définir cette option du compilateur par programmation

Voir aussi

Référence

/Zc (Conformité)

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