Sdílet prostřednictvím


warning pragma

Umožňuje selektivní úpravy chování zpráv upozornění kompilátoru.

Syntaxe

#pragma warning(
 [ ]
  [ ... ]
[ n ]
#pragma warning( pop )

Poznámky

K dispozici jsou následující parametry specifikátoru upozornění.

specifikátor upozornění Význam
, , , Použijte danou úroveň na zadaná upozornění. Příklad: vypne upozornění 5033 (obvykle varování úrovně 1), pokud není úroveň upozornění nastavena na hodnotu nebo vyšší. Lze ji také použít k zapnutí určeného upozornění, které je ve výchozím nastavení vypnuté.
default Resetujte chování upozornění na výchozí hodnotu. Zapne také zadané upozornění, které je ve výchozím nastavení vypnuté. Upozornění se vygeneruje na výchozí, zdokumentované úrovni.

Další informace najdete v tématu Upozornění kompilátoru, která jsou ve výchozím nastavení vypnuta.
disable Nezadávejte zadané zprávy upozornění. Vlastnost optional je povolena.
error Nahlašte zadaná upozornění jako chyby.
once Zobrazí zadané zprávy pouze jednou.
suppress Nasdílí aktuální stav v zásobníku, zakáže zadané upozornění pro další řádek a pak zobrazí zásobník upozornění tak, aby se stav resetuje.
justification Volitelný řetězec popisující důvod zakázání nebo potlačení upozornění. Představeno v Visual Studio 2022 verze 17.14.

Následující příkaz kódu ukazuje, že parametr může obsahovat více čísel upozornění a že více parametrů lze zadat ve stejné direktivě .

#pragma warning( disable : 4507 4034; once : 4385; error : 164 )

Pokud je však pole přítomno, lze zadat pouze jedno číslo upozornění. Následující příkaz kódu ilustruje použití pole.

#pragma warning( disable : 4507, justification : "This warning is disabled" )

Pomocí pole můžete vysvětlit, proč je upozornění zakázané nebo potlačené. Pole je podporováno pouze pro soubory a . Odůvodnění se zobrazí ve výstupu SARIF (Static Analysis Results Interchange Format) při zadání možnosti. Jeho hodnota je úzký řetězcový literál s kódováním UTF-8. K vygenerování souboru SARIF použijte možnost kompilátoru .

Tato direktiva je funkčně ekvivalentní následujícímu kódu:

// 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)

Kompilátor přidá 4000 k libovolnému číslu upozornění, které je v rozmezí od 0 do 999.

Čísla upozornění v rozsahu 4700–4999 jsou přidružená ke generování kódu. V případě těchto upozornění zůstane stav upozornění, když kompilátor dosáhne definice funkce, platit pro zbytek funkce. Použití ve funkci ke změně stavu čísla upozornění většího než 4699 se projeví až po konci funkce. Následující příklad ukazuje správné umístění zakázat zprávu upozornění generování kódu a pak ji obnovit.

// 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
}

Všimněte si, že v celém těle funkce bude platit poslední nastavení pro celou funkci.

Nabízení a otevření

podporuje také následující syntaxi, kde volitelný parametr n představuje úroveň upozornění (1 až 4).

#pragma warning( push [ , n ] )

#pragma warning( pop )

ukládá aktuální stav upozornění pro každé upozornění. uloží aktuální stav pro každé upozornění a nastaví globální úroveň upozornění na n.

zobrazí poslední stav upozornění vložený do zásobníku. Všechny změny provedené ve stavu upozornění mezi a se vrátí zpět. Podívejte se na tento příklad:

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )

Na konci tohoto kódu obnoví stav každého upozornění (včetně 4705, 4706 a 4707) na to, co bylo na začátku kódu.

Při zápisu souborů hlaviček můžete pomocí a zaručit, že změny stavu upozornění provedené uživatelem nezabrání správnému kompilaci hlaviček. Použijte na začátku záhlaví a na konci. Můžete mít například hlavičku, která se nekompiluje čistě na úrovni upozornění 4. Následující kód změní úroveň upozornění na 3 a na konci záhlaví obnoví původní úroveň upozornění.

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )

Volba mezi a

A nabízejí jemně odstupňovanou kontrolu nad potlačením upozornění:

  • [[gsl::suppress]] potlačí pouze upozornění vygenerované Code Analysis Microsoft C++. Použijte ho s kontrolami C++ Core Guidelines, které lze použít pro obor nebo konkrétní deklaraci.
  • lze použít pro jakékoli upozornění kompilátoru. Je užitečné, když potřebujete potlačit upozornění v určitém bloku kódu, aniž byste výrazně změnili strukturu kódu.

Kdykoli je to možné, použijte [[gsl::suppress]] k potlačení upozornění Code Analysis Microsoft C++.

Další informace o možnostech kompilátoru, které pomáhají potlačit upozornění, naleznete v tématu a .

Viz také

direktivy Pragma a a klíčová slova