Sdílet prostřednictvím


warning pragma

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

Syntax

#pragma warning(
warning-specifier : warning-number-list
 [;warning-specifier:warning-number-list ... ] )
#pragma warning( push [ ,n ] )
#pragma warning( pop )

Poznámky

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

specifikátor upozornění Význam
1, 2, 3, 4 Použijte danou úroveň na zadaná upozornění. Zapne také zadané 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í.
error Nahlašte zadaná upozornění jako chyby.
once Zobrazí zadané zprávy pouze jednou.
suppress Nasdílí aktuální stav pragma v zásobníku, zakáže zadané upozornění pro další řádek a pak zobrazí zásobník upozornění tak, aby se pragma stav resetuje.

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

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

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

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

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í warningpragma 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í warningpragma 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 Test ends
}

int main() {
   int x;
   int y = x;   // C4700
}

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

Nabízení a otevření

warning pragma 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 )

pragma warning( push ) ukládá aktuální stav upozornění pro každé upozornění. pragma warning( push, n ) uloží aktuální stav pro každé upozornění a nastaví globální úroveň upozornění na n.

pragma warning( pop ) zobrazí poslední stav upozornění vložený do zásobníku. Všechny změny provedené ve stavu upozornění mezi push a pop 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 pop 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í push a pop zaručit, že změny stavu upozornění provedené uživatelem nezabrání správnému kompilaci hlaviček. Použijte push na začátku záhlaví a pop 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 )

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

Viz také

direktivy Pragma a __pragma a _Pragma klíčová slova