warning pragma

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

Syntaxe

#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í vypnutá.
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 zásobníku, zakáže zadané upozornění pro další řádek a pak vyskočí zásobník upozornění tak, aby pragma se stav resetuje.

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

#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. warningpragma Použití funkce 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í zprávy warningpragma upozornění generování kódu a jeho následné obnovení.

// 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 funkce pro celou funkci.

Nabízení a otevření

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

#pragma warning( push [ , n ] )

#pragma warning( pop )

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

Zobrazí pragmawarning( pop ) poslední stav upozornění vložený do zásobníku. Všechny změny, které jste provedli ve stavu upozornění, a pushpop jsou vráceny 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 použít 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é vám pomůžou potlačit upozornění, naleznete /FI a /w.

Viz také

Direktivy Pragma a __pragma_Pragma klíčová slova