warning
pragma
Möjliggör selektiv ändring av beteendet för kompilatorvarningsmeddelanden.
Syntax
#pragma warning(
warning-specifier
:
warning-number-list
[;
warning-specifier
:
warning-number-list
... ])
#pragma warning( push
[,
n ])
#pragma warning( pop )
Anmärkningar
Följande parametrar för varningsspecificerare är tillgängliga.
varningsspecificerare | Betydelse |
---|---|
1 , 2 , 3 , 4 |
Tillämpa den angivna nivån på de angivna varningarna. Aktiverar också en angiven varning som är inaktiverad som standard. |
default |
Återställ varningsbeteendet till standardvärdet. Aktiverar också en angiven varning som är inaktiverad som standard. Varningen genereras som standard, dokumenterad, nivå. Mer information finns i Kompilatorvarningar som är inaktiverade som standard. |
disable |
Utfärda inte de angivna varningsmeddelandena. |
error |
Rapportera de angivna varningarna som fel. |
once |
Visa de angivna meddelandena bara en gång. |
suppress |
Push-överför det aktuella tillståndet för pragma på stacken, inaktiverar den angivna varningen för nästa rad och sedan visar varningsstacken så att pragma tillstånd återställs. |
Följande kodinstruktor visar att en warning-number-list
parameter kan innehålla flera varningsnummer och att flera warning-specifier
parametrar kan anges i samma pragma direktiv.
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
Det här direktivet är funktionellt likvärdigt med följande kod:
// 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 )
Kompilatorn lägger till 4000 till alla varningsnummer som är mellan 0 och 999.
Varningsnummer i intervallet 4700-4999 är associerade med kodgenerering. För dessa varningar gäller tillståndet för varningen som gäller när kompilatorn når funktionsdefinitionen förblir i kraft för resten av funktionen. Användningen av warning
pragma i funktionen för att ändra tillståndet för ett varningsnummer som är större än 4699 börjar gälla först efter att funktionen har upphört. I följande exempel visas rätt placering av en warning
pragma för att inaktivera ett varningsmeddelande för kodgenerering och sedan återställa det.
// 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
}
Observera att i en funktionstext gäller den sista inställningen för warning
pragma för hela funktionen.
Push och pop
warning
pragma stöder också följande syntax, där den valfria parametern n representerar en varningsnivå (1 till 4).
#pragma warning( push [ , n ] )
#pragma warning( pop )
pragma
warning( push )
lagrar det aktuella varningstillståndet för varje varning.
pragma
warning( push, n )
lagrar det aktuella tillståndet för varje varning och anger den globala varningsnivån till n.
Den pragmawarning( pop )
visar det senaste varningstillståndet som trycktes på stacken. Alla ändringar som du har gjort i varningstillståndet mellan push
och pop
ångras. Tänk på det här exemplet:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
I slutet av den här koden återställer pop
tillståndet för varje varning (inklusive 4705, 4706 och 4707) till vad den var i början av koden.
När du skriver huvudfiler kan du använda push
och pop
för att garantera att ändringar i varningstillståndet som görs av en användare inte förhindrar att rubrikerna kompileras korrekt. Använd push
i början av rubriken och pop
i slutet. Du kan till exempel ha en rubrik som inte kompileras på varningsnivå 4. Följande kod ändrar varningsnivån till 3 och återställer sedan den ursprungliga varningsnivån i slutet av rubriken.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
Mer information om kompileringsalternativ som hjälper dig att förhindra varningar finns i /FI
och /w
.