Udostępnij za pośrednictwem


warning pragma

Umożliwia selektywne modyfikowanie zachowania komunikatów ostrzegawczych kompilatora.

Składnia

#pragma warning(
warning-specifier : warning-number-list
 [; warning-specifier : warning-number-list ... ] )
#pragma warning( push [ , n ] )
#pragma warning( pop )

Uwagi

Dostępne są następujące parametry specyfikatora ostrzeżenia.

specyfikator ostrzegawczy Znaczenie
1, , 2, , 34 Zastosuj dany poziom do określonych ostrzeżeń. Włącza również określone ostrzeżenie, które jest domyślnie wyłączone.
default Zresetuj zachowanie ostrzegawcze do wartości domyślnej. Włącza również określone ostrzeżenie, które jest domyślnie wyłączone. Ostrzeżenie zostanie wygenerowane na domyślnym poziomie udokumentowany.

Aby uzyskać więcej informacji, zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone.
disable Nie należy wystawiać określonych komunikatów ostrzegawczych.
error Zgłoś określone ostrzeżenia jako błędy.
once Wyświetl tylko jeden raz określone komunikaty.
suppress Wypycha bieżący stan pragma elementu na stosie, wyłącza określone ostrzeżenie dla następnego wiersza, a następnie wyświetla stos ostrzeżeń tak, aby pragma stan został zresetowany.

Poniższa instrukcja kodu ilustruje, że warning-number-list parametr może zawierać wiele liczb ostrzegawczych i że można określić wiele warning-specifier parametrów w tej samej pragma dyrektywie.

#pragma warning( disable : 4507 34; once : 4385; error : 164 )

Ta dyrektywa jest funkcjonalnie równoważna następującemu kodzie:

// 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 )

Kompilator dodaje 4000 do dowolnej liczby ostrzeżeń z zakresu od 0 do 999.

Numery ostrzegawcze w zakresie 4700–4999 są skojarzone z generowaniem kodu. W przypadku tych ostrzeżeń stan ostrzeżenia, gdy kompilator osiągnie definicję funkcji, pozostaje w mocy dla pozostałej części funkcji. warningpragma Użyj funkcji w funkcji , aby zmienić stan ostrzeżenia o numerze większym niż 4699 dopiero po zakończeniu funkcji. W poniższym przykładzie pokazano prawidłowe rozmieszczenie elementu , warningpragma aby wyłączyć komunikat ostrzegawczy generowania kodu, a następnie przywrócić go.

// 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
}

Zwróć uwagę, że w całej treści funkcji ostatnie ustawienie warningpragma elementu będzie obowiązywać dla całej funkcji.

Wypychanie i wyskakujące okienko

Funkcja warningpragma obsługuje również następującą składnię, gdzie opcjonalny n parametr reprezentuje poziom ostrzeżenia (od 1 do 4).

#pragma warning( push [ , n ] )

#pragma warning( pop )

Przechowuje pragmawarning( push ) bieżący stan ostrzeżenia dla każdego ostrzeżenia. Przechowuje pragmawarning( push, n ) bieżący stan dla każdego ostrzeżenia i ustawia globalny poziom ostrzeżenia na n.

Element pragmawarning( pop ) wyskakuje ostatni stan ostrzeżenia wypchnięty do stosu. Wszelkie zmiany wprowadzone w stanie ostrzeżenia między push i pop zostaną cofnięte. Rozważ taki przykład:

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )

Na końcu tego kodu pop przywraca stan każdego ostrzeżenia (w tym 4705, 4706 i 4707) do tego, co było na początku kodu.

Podczas pisania plików nagłówkowych można użyć funkcji push i pop w celu zagwarantowania, że zmiany stanu ostrzeżenia wprowadzone przez użytkownika nie uniemożliwiają poprawnego kompilowania nagłówków. Użyj push na początku nagłówka i pop na końcu. Na przykład może istnieć nagłówek, który nie jest kompilowany w sposób czysty na poziomie ostrzeżenia 4. Poniższy kod zmienia poziom ostrzeżenia na 3, a następnie przywraca oryginalny poziom ostrzeżenia na końcu nagłówka.

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )

Aby uzyskać więcej informacji na temat opcji kompilatora, które ułatwiają pomijanie ostrzeżeń, zobacz /FI i /w.

Zobacz też

Pragmadyrektywy i __pragma słowa kluczowe i _Pragma