Udostępnij za pośrednictwem


ostrzeżenie

Umożliwia selektywne modyfikowanie zachowania komunikatów ostrzeżeń kompilatora.

#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żeń.

specyfikator-ostrzeżeń

Znaczenie

1, 2, 3, 4

Zastosowanie danego poziomu do określonego ostrzeżenia (określonych ostrzeżeń).Opcja ta włącza także określone ostrzeżenie, które jest domyślnie wyłączone.

default

Resetuje zachowanie ostrzeżenia do wartości domyślnej.Opcja ta włącza także określone ostrzeżenie, które jest domyślnie wyłączone.Ostrzeżenie zostanie wygenerowane na jego domyślnym, udokumentowanym poziomie.

Aby uzyskać więcej informacji, zobacz Domyślnie wyłączone ostrzeżenia kompilatora.

disable

Nie wydaje określonych wiadomości ostrzeżeń.

error

Raportuje określone ostrzeżenia jako błędy.

once

Wyświetla określone wiadomości tylko jeden raz.

suppress

Umieszcza bieżący stan pragmy na stosie, wyłącza ostrzeżenia określone dla następnego wiersza, a następnie zdejmuje ze stosu ostrzeżenie, aby zresetować stan pragmy.

Za pomocą poniższego kodu instrukcji zilustrowano, że parametr warning-number-list może zawierać wiele ostrzeżeń i wiele parametrów warning-specifier może być określonych w tej samej dyrektywie pragmy.

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

Jest to funkcjonalny odpowiednik następującego kodu.

// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )

// Issue warning 4385 only once.
#pragma warning( once : 4385 )

// Report warning 4164 as an error.
#pragma warning( error : 164 )

Kompilator dodaje 4000 do każdego numeru ostrzeżenia z zakresu od 0 do 999.

Dla numerów ostrzeżeń z zakresu 4700-4999, które są skojarzone z generacją kodu, stan ostrzeżenia, gdy kompilator napotka otwarty nawias klamrowy funkcji będzie obowiązywać na pozostałą część funkcji.Wykorzystanie pragmy warning w funkcji do zmiany stanu ostrzeżenia, które ma numer większy od 4699 będzie wprowadzone dopiero po zakończeniu funkcji.W poniższym przykładzie pokazano poprawne rozmieszczenie pragm warning w celu wyłączenia komunikatu ostrzegawczego generowania kodu, a następnie jego przywrócenia.

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

Należy zauważyć, że w całej treści funkcji, ostatnie ustawienie pragmy warning będzie obowiązywać dla całej funkcji.

Operacje push i pop

Pragma warning obsługuje także następującą składnię.

#pragma warning( push [ ,n ] )

#pragma warning( pop )

Gdzie n reprezentuje poziom ostrzeżenia (od 1 do 4).

Pragma warning( push ) przechowuje aktualny stan ostrzeżenia dla każdego ostrzeżenia.Pragma warning( push, n) przechowuje bieżący stanu dla każdego ostrzeżenia i ustawia globalny poziom ostrzeżeń na n.

Pragma warning( pop ) zdejmuje ze stosu ostatni wrzucony na niego stan ostrzeżenia.Wszelkie zmiany dokonane w stanie ostrzeżenia, między push i pop zostaną cofnięte.Rozważmy następujący 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łówka, można użyć push i pop do zagwarantowania, że zmiany stanu ostrzeżenia wprowadzone przez użytkownika nie uniemożliwiają nagłówkom poprawnego kompilowania.Należy użyć push na początku nagłówka i pop na końcu.Na przykład, jeśli wykorzystujemy nagłówek, który nie kompiluje czysto na poziomie ostrzeżenia 4, poniższy kod zmieni poziom ostrzeżenia na 3 i następnie przywróci oryginalny poziom ostrzeżenia na końcu nagłówka.

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

Aby uzyskać więcej informacji dotyczących opcji kompilatora, które pomagają pomijać ostrzeżenia, zobacz /FI i /w.

Zobacz też

Informacje

Dyrektywy pragma i słowo kluczowe __Pragma