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. warning
pragma 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 warning
pragma 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í warning
pragma funkce pro celou funkci.
Nabízení a otevření
Podporuje warning
pragma 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 push
pop
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
.