warning
pragma
Aktiviert die selektive Änderung des Verhaltens der Compilerwarnmeldungen.
Syntax
#pragma warning(
warning-specifier
:
warning-number-list
[;
warning-specifier
:
warning-number-list
... ])
#pragma warning( push
[,
n ])
#pragma warning( pop )
Bemerkungen
Die folgenden Parameter für Warnungsbezeichner stehen zur Verfügung.
warning-specifier | Bedeutung |
---|---|
1 , 2 , 3 , 4 |
Wenden Sie die angegebene Ebene auf die angegebenen Warnungen an. Aktiviert auch eine angegebene Warnung, die standardmäßig deaktiviert ist. |
default |
Setzen Sie das Warnverhalten auf den Standardwert zurück. Aktiviert auch eine angegebene Warnung, die standardmäßig deaktiviert ist. Die Warnung wird auf der standardmäßigen dokumentierten Ebene generiert. Weitere Informationen finden Sie unter Standardmäßig deaktivierte Compilerwarnungen. |
disable |
Geben Sie die angegebenen Warnmeldungen nicht aus. |
error |
Melden Sie die angegebenen Warnungen als Fehler. |
once |
Zeigen Sie die angegebene(n) Meldung(en) nur einmal an. |
suppress |
Pusht den aktuellen Zustand des pragma auf dem Stapel, deaktiviert die angegebene Warnung für die nächste Zeile und füllt dann den Warnungsstapel auf, sodass der pragma Zustand zurückgesetzt wird. |
Die folgende Code-Anweisung veranschaulicht, dass ein warning-number-list
Parameter mehrere Warnnummern enthalten kann und dass mehrere warning-specifier
Parameter in derselben pragma Direktive angegeben werden können.
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
Diese Direktive entspricht funktional dem folgenden Code:
// 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 )
Der Compiler fügt 4000 zu jeder Warnungsnummer zwischen 0 und 999 hinzu.
Warnnummern im Bereich 4700-4999 sind der Codegenerierung zugeordnet. Bei diesen Warnungen bleibt der Status der Warnung, die wirksam ist, wenn der Compiler die Funktionsdefinition erreicht, für den Rest der Funktion gültig. Die Verwendung von warning
pragma in der Funktion zum Ändern des Zustands einer Warnungszahl größer als 4699 wird erst nach dem Ende der Funktion wirksam. Das folgende Beispiel zeigt die richtige Platzierung eines warning
pragma , um eine Codegenerierungswarnung zu deaktivieren und dann wiederherzustellen.
// 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
}
Beachten Sie, dass in einem Funktionstext die letzte Einstellung des warning
pragma für die gesamte Funktion gültig ist.
Push und Pop
Der warning
pragma unterstützt auch die folgende Syntax, wobei der optionale n-Parameter eine Warnstufe (1 bis 4) darstellt.
#pragma warning( push [ , n ] )
#pragma warning( pop )
Der pragmawarning( push )
speichert den aktuellen Warnstatus für jede Warnung. Der pragmawarning( push, n )
speichert den aktuellen Zustand für jede Warnung und legt die globale Warnstufe auf n fest.
Die pragmawarning( pop )
pops den letzten Warnzustand, der auf den Stapel gepusht wurde. Alle Änderungen, die Sie am Warnzustand zwischen push
und pop
vorgenommen haben, werden rückgängig gemacht. Betrachten Sie das folgende Beispiel:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
Am Ende dieses Codes pop
stellt den Status jeder Warnung (einschließlich 4705, 4706 und 4707) auf den Zustand zurück, der zu Beginn des Codes war.
Wenn Sie Headerdateien schreiben, können Sie und pop
verwendenpush
, um sicherzustellen, dass von einem Benutzer vorgenommene Änderungen des Warnungszustands nicht verhindern, dass die Header ordnungsgemäß kompiliert werden. Verwenden Sie push
am Anfang des Headers und pop
am Ende. Beispielsweise verfügen Sie möglicherweise über einen Header, der auf Warnungsebene 4 nicht sauber kompiliert wird. Der folgende Code ändert die Warnstufe in 3 und stellt dann die ursprüngliche Warnungsebene am Ende des Headers wieder her.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
Weitere Informationen zu Compileroptionen, mit denen Sie Warnungen unterdrücken können, finden Sie unter /FI
und /w
.
Siehe auch
Pragma-Anweisungen und die __pragma
Schlüsselwörter und _Pragma