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 wird der Status der Warnung wirksam, wenn der Compiler die Funktionsdefinition wieder erreicht Standard für den Rest der Funktion wirksam ist. Die Verwendung der warningpragma 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 warningpragma 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 warningpragma Funktion in einem Funktionstext für die gesamte Funktion wirksam ist.

Push und Pop

Die warningpragma 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.

Siehe auch

Pragma-Direktiven und die __pragma und _Pragma Schlüsselwort (keyword)