Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktiviert selektive Änderung des Verhaltens von Compilerwarnungen.
Syntax
#pragma warning(
[ ]
[ ... ]
[ n ]
#pragma warning( pop )
Bemerkungen
Die folgenden Parameter für Warnungsbezeichner sind verfügbar.
| Warnungsbezeichner | Bedeutung |
|---|---|
| , , | Wenden Sie die angegebene Ebene auf die angegebenen Warnungen an. Beispiel: Deaktiviert die Warnung 5033 (normalerweise eine Warnung der Stufe 1), es sei denn, die Warnstufe ist auf oder höher eingestellt. Kann auch verwendet werden, um eine angegebene Warnung zu aktivieren, 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. Die optionale Eigenschaft ist zulässig. |
error |
Melden Sie die angegebenen Warnungen als Fehler. |
once |
Zeigt die angegebene Nachricht(n) nur einmal an. |
suppress |
Verschiebt den aktuellen Zustand der im Stapel, deaktiviert die angegebene Warnung für die nächste Zeile und füllt dann den Warnstapel, sodass der Zustand zurückgesetzt wird. |
justification |
Optionale Zeichenfolge, die den Grund für das Deaktivieren oder Unterdrücken der Warnung beschreibt. Eingeführt in Visual Studio 2022, Version 17.14. |
Die folgende Code-Anweisung veranschaulicht, dass ein -Parameter mehrere Warnungsnummern enthalten kann und dass mehrere Parameter in derselben Direktive angegeben werden können.
#pragma warning( disable : 4507 4034; once : 4385; error : 164 )
Wenn das Feld jedoch vorhanden ist, kann nur eine Warnnummer angegeben werden. Die folgende Codeanweisung veranschaulicht die Verwendung des Felds.
#pragma warning( disable : 4507, justification : "This warning is disabled" )
Verwenden Sie das Feld, um zu erläutern, warum eine Warnung deaktiviert oder unterdrückt wird. Das Feld wird nur für das Feld und unterstützt. Die Begründung wird im SARIF-Ausgabe (Static Analysis Results Interchange Format) angezeigt, wenn die Option angegeben wird. Sein Wert ist ein UTF-8-codiertes schmales Zeichenfolgenliteral. Verwenden Sie die Compileroption, um eine SARIF-Datei zu generieren.
Diese Direktive entspricht funktional dem folgenden Code:
// Disable warning messages 4507 and 4034.
#pragma warning(disable : 4507 4034)
// 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 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 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 compiling Test()
}
int main()
{
int x;
int y = x; // C4700
}
Beachten Sie, dass die letzte Einstellung der in einem Funktionstext für die gesamte Funktion wirksam ist.
Push und Pop
Die 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 speichert den aktuellen Warnstatus für jede Warnung. Die speichert den aktuellen Zustand für jede Warnung und legt die globale Warnungsstufe auf nfest.
Die füllt den letzten Warnzustand, der auf den Stapel verschoben wurde. Alle Änderungen, die Sie am Warnzustand zwischen und 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 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 und verwenden, um sicherzustellen, dass änderungen am Warnzustand, die von einem Benutzer vorgenommen wurden, nicht verhindern, dass die Header ordnungsgemäß kompiliert werden. Verwenden Sie am Anfang der Kopfzeile und 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 )
Wählen zwischen und
Beide und bieten eine fein abgestimmte Kontrolle über die Warnunterdrückung:
-
[[gsl::suppress]]unterdrückt nur Warnungen, die von Microsoft C++-Code Analysis ausgegeben werden. Verwenden Sie sie mit den C++-Kernrichtlinienprüfungen, die auf einen Bereich oder eine bestimmte Deklaration angewendet werden können. - kann für jede Compilerwarnung verwendet werden. Es ist nützlich, wenn Sie eine Warnung in einem bestimmten Codeblock unterdrücken müssen, ohne die Struktur des Codes erheblich zu ändern.
Verwenden Sie nach Möglichkeit [[gsl::suppress]], um Microsoft C++-Code Analysis Warnungen zu unterdrücken.
Weitere Informationen zu Compileroptionen, mit denen Sie Warnungen unterdrücken können, finden Sie unter und .
Siehe auch
Pragma-Direktiven und die schlüsselwörter und