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í warning
pragma 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í warning
pragma 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í warning
pragma 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
.