Freigeben über


warning pragma

Aktiviert selektive Änderung des Verhaltens von Compilerwarnungen.

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 sind verfügbar.

Warnungsbezeichner 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 Zurücksetzen des Warnverhaltens auf den Standardwert. Aktiviert außerdem eine angegebene Warnung, die standardmäßig deaktiviert ist. Die Warnung wird auf der Standardebene generiert, dokumentiert.

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 Zeigt die angegebene Nachricht(n) nur einmal an.
suppress Verschiebt den aktuellen Zustand der pragma im Stapel, 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 einer beliebigen 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 warningpragma in der Funktion, um den Status einer Warnnummer zu ändern, die größer als 4699 ist, wird erst nach dem Ende der Funktion wirksam. Das folgende Beispiel zeigt die richtige Platzierung eines warningpragma zum Deaktivieren einer Warnmeldung zur Codegenerierung und anschließend zum Wiederherstellen.

// 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 warningpragma in einem Funktionstext für die gesamte Funktion wirksam ist.

Push und Pop

Die warningpragma unterstützt auch die folgende Syntax, wobei der optionale n Parameter eine Warnstufe (1 bis 4) darstellt.

#pragma warning( push [ , n ] )

#pragma warning( pop )

Die pragmawarning( push ) speichert den aktuellen Warnstatus für jede Warnung. Die pragmawarning( push, n ) speichert den aktuellen Zustand für jede Warnung und legt die globale Warnungsstufe auf nfest.

Die pragmawarning( pop ) füllt den letzten Warnzustand, der auf den Stapel verschoben wurde. Alle Änderungen, die Sie am Warnzustand zwischen push und pop vorgenommen haben, werden rückgängig gemacht. Betrachten Sie dieses 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 stellt pop den Status jeder Warnung wieder her (einschließlich 4705, 4706 und 4707), was sie am Anfang des Codes war.

Wenn Sie Kopfzeilendateien schreiben, können Sie push und pop verwenden, um sicherzustellen, dass änderungen am Warnzustand, die von einem Benutzer vorgenommen wurden, nicht verhindern, dass die Header 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.

Siehe auch

Pragma-Direktiven und die schlüsselwörter __pragma und _Pragma