Dela via


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 warningpragma 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 warningpragma 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 warningpragma 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.

Se även

Pragma-direktiv och nyckelorden __pragma och _Pragma