warning pragma

Active la modification sélective du comportement des messages d'avertissement du compilateur.

Syntaxe

#pragma warning(
warning-specifier : warning-number-list
 [;warning-specifier:warning-number-list ... ] )
#pragma warning( push [ ,n ] )
#pragma warning( pop )

Notes

Les paramètres spécificateur-avertissement suivants sont disponibles.

spécificateur-avertissement Signification
1, 2, 3, 4 Appliquez le niveau donné aux avertissements spécifiés. Active également un avertissement spécifié qui est désactivé par défaut.
default Réinitialise le comportement d'avertissement à sa valeur par défaut. Active également un avertissement spécifié qui est désactivé par défaut. L'avertissement est généré à son niveau par défaut, documenté.

Pour plus d’informations, consultez les avertissements du compilateur désactivés par défaut.
disable Ne émettez pas les messages d’avertissement spécifiés.
error Signale les avertissements spécifiés comme des erreurs.
once Affiche le ou les messages spécifiés une seule fois.
suppress Envoie (push) l’état actuel de la pragma pile, désactive l’avertissement spécifié pour la ligne suivante, puis affiche la pile d’avertissements afin que l’état pragma soit réinitialisé.

L’instruction de code suivante illustre qu’un warning-number-list paramètre peut contenir plusieurs nombres d’avertissements et que plusieurs warning-specifier paramètres peuvent être spécifiés dans la même pragma directive.

#pragma warning( disable : 4507 34; once : 4385; error : 164 )

Cette directive est fonctionnellement équivalente au code suivant :

// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )

// Issue warning C4385 only once.
#pragma warning( once : 4385 )

// Report warning C4164 as an error.
#pragma warning( error : 164 )

Le compilateur ajoute 4000 à n'importe quel numéro d'avertissement compris entre 0 et 999.

Les numéros d’avertissement de la plage 4700-4999 sont associés à la génération de code. Pour ces avertissements, l’état de l’avertissement en vigueur lorsque le compilateur atteint la définition de la fonction reste en vigueur pour le reste de la fonction. L’utilisation de la warningpragma fonction dans la fonction pour modifier l’état d’un nombre d’avertissements supérieur à 4699 prend effet uniquement après la fin de la fonction. L’exemple suivant montre le positionnement correct d’un warningpragma message d’avertissement de génération de code, puis pour le restaurer.

// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
   int x;
   int y = x;   // no C4700 here
   #pragma warning(default:4700)   // C4700 enabled after Test ends
}

int main() {
   int x;
   int y = x;   // C4700
}

Notez que tout au long d’un corps de fonction, le dernier paramètre de la warningpragma fonction sera en vigueur pour l’ensemble de la fonction.

Empiler et dépiler

Il warningpragma prend également en charge la syntaxe suivante, où le paramètre n facultatif représente un niveau d’avertissement (1 à 4).

#pragma warning( push [ , n ] )

#pragma warning( pop )

Le pragmawarning( push ) paramètre stocke l’état d’avertissement actuel pour chaque avertissement. Le pragmawarning( push, n ) paramètre stocke l’état actuel de chaque avertissement et définit le niveau d’avertissement global sur n.

Le pragmawarning( pop ) dernier état d’avertissement est envoyé sur la pile. Toutes les modifications apportées à l’état d’avertissement entre push et pop sont annulées. Prenons cet exemple :

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )

À la fin de ce code, pop restaure l’état de chaque avertissement (inclut 4705, 4706 et 4707) à ce qu’il était au début du code.

Lorsque vous écrivez des fichiers d’en-tête, vous pouvez utiliser push et pop garantir que les modifications d’état d’avertissement apportées par un utilisateur n’empêchent pas la compilation correcte des en-têtes. Utilisez push au début de l’en-tête et pop à la fin. Par exemple, vous pouvez avoir un en-tête qui ne compile pas propre ly au niveau d’avertissement 4. Le code suivant modifie le niveau d’avertissement sur 3, puis restaure le niveau d’avertissement d’origine à la fin de l’en-tête.

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )

Pour plus d’informations sur les options du compilateur qui vous aident à supprimer les avertissements, consultez /FI et /w.

Voir aussi

Directives pragma et les __pragma_Pragma mot clé