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 )
Hinweise
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 außerdem eine angegebene Warnung, die standardmäßig deaktiviert ist. |
default |
Setzen Sie das Warnverhalten auf den Standardwert zurück. Aktiviert außerdem eine angegebene Warnung, die standardmäßig deaktiviert ist. Die Warnung wird auf der standardmäßigen dokumentierten Ebene generiert. Weitere Informationen finden Sie unter Compilerwarnungen, die standardmäßig deaktiviert sind. |
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 |
Verschiebt den aktuellen Zustand des pragma Stapels, deaktiviert die angegebene Warnung für die nächste Zeile und füllt dann den Warnstapel, sodass der pragma Zustand zurückgesetzt wird. |
Die folgende Code-Anweisung veranschaulicht, dass ein warning-number-list
Parameter mehrere Warnungsnummern 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.
Warnungsnummern im Bereich 4700-4999 sind der Codegenerierung zugeordnet. Bei diesen Warnungen bleibt der Status der Warnung wirksam, wenn der Compiler die Funktionsdefinition erreicht, für den Rest der Funktion wirksam. Die Verwendung der warning
pragma Funktion, um den Status einer Warnungsnummer zu ändern, die größer als 4699 ist, wird erst nach dem Ende der Funktion wirksam. Das folgende Beispiel zeigt die richtige Platzierung einer warning
pragma Warnung zur Codegenerierung und anschließend zum Wiederherstellen einer Warnmeldung zur Codegenerierung.
// 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 die letzte Einstellung der warning
pragma Funktion in einem Funktionstext für die gesamte Funktion wirksam ist.
Push und Pop
Die warning
pragma folgende Syntax wird ebenfalls unterstützt, wobei der optionale n-Parameter eine Warnstufe (1 bis 4) darstellt.
#pragma warning( push [ , n ] )
#pragma warning( pop )
Der pragmawarning( push )
aktuelle Warnstatus wird für jede Warnung gespeichert. Der pragmawarning( push, n )
aktuelle Zustand wird für jede Warnung gespeichert und die globale Warnstufe auf n festgelegt.
Der pragmawarning( pop )
letzte Warnzustand wird auf den Stapel verschoben. Alle Änderungen, die Sie am Warnstatus vorgenommen haben, werden pop
rückgängig push
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
wird der Status jeder Warnung (einschließlich 4705, 4706 und 4707) wiederhergestellt, was sie zu Beginn des Codes war.
Wenn Sie Kopfzeilendateien schreiben, können Sie verwenden push
und pop
garantieren, dass von einem Benutzer vorgenommene Warnzustandsänderungen nicht verhindern, dass die Kopfzeilen ordnungsgemäß kompiliert werden. Verwenden Sie push
am Anfang der Kopfzeile und pop
am Ende. Beispielsweise verfügen Sie möglicherweise über einen Header, der nicht sauber auf Warnungsebene 4 kompiliert wird. Der folgende Code ändert die Warnstufe in 3 und stellt dann die ursprüngliche Warnstufe am Ende der Kopfzeile 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
.