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 )
Remarques
Les paramètres spécificateur-avertissement suivants sont disponibles.
spécificateur-avertissement | Signification |
---|---|
1 , 2 , 3 , 4 |
Applique 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 avertissements du compilateur désactivés par défaut. |
disable |
N’é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 |
Exécute un push de l’état actuel du pragma sur la pile, désactive l’avertissement spécifié pour la ligne suivante, puis dépile la pile d’avertissements afin que l' pragma État soit réinitialisé. |
L’instruction de code suivante montre qu’un warning-number-list
paramètre peut contenir plusieurs numéros d’avertissement 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 dans 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 fonction reste en vigueur pour le reste de la fonction. L’utilisation de warning
pragma 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 l’emplacement correct d’un warning
pragma pour désactiver un 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 dans le corps d’une fonction, le dernier paramètre du warning
pragma sera appliqué à la fonction entière.
Empiler et dépiler
Prend également en charge la syntaxe suivante, où le paramètre n facultatif représente un niveau d’avertissement (1 à 4). warning
pragma
#pragma warning( push [ , n ] )
#pragma warning( pop )
pragmawarning( push )
Stocke l’état d’avertissement actuel pour chaque avertissement. pragmawarning( push, n )
Stocke l’état actuel pour chaque avertissement et définit le niveau d’avertissement global sur n.
Le pragmawarning( pop )
dépile le dernier état d’avertissement envoyé sur la pile. Toutes les modifications que vous avez apportées à l’état d’avertissement entre push
et pop
sont annulées. Prenons l’exemple suivant :
#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 (y compris 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
pour garantir que les modifications de l’état d’avertissement effectuées par un utilisateur n’empêchent pas les en-têtes de se compiler correctement. 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 se compile pas correctement au niveau d’avertissement 4. Le code suivant modifie le niveau d’avertissement à 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
.