Compartilhar via


warning

Permite a modificação seletiva do comportamento de mensagens de aviso do compilador.

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

Comentários

Os seguintes parâmetros de especificador de aviso estão disponíveis.

especificador de aviso

Significado

1, 2, 3, 4

Aplique o nível fornecido aos avisos especificados. Isso também ativa um aviso especificado que é desativado por padrão.

default

Redefina o comportamento de aviso para seu valor padrão. Isso também ativa um aviso especificado que é desativado por padrão. O aviso será gerado em seu nível padrão e documentado.

Para obter mais informações, consulte Avisos de compilador desativados por padrão.

disable

Não emita a mensagem de aviso especificada.

error

Relate os avisos especificados como erros.

once

Exiba as mensagens especificadas somente uma vez.

suppress

Empurra o estado atual do pragma na pilha, desabilita o aviso especificado para a próxima linha e depois exibe a pilha de aviso para que o estado de pragma seja redefinido.

A seguinte instrução de código mostra que um parâmetro warning-number-list pode conter vários números de aviso e que vários parâmetros warning-specifier podem ser especificados na mesma política de pragma.

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

Essa funcionalidade é equivalente ao código a seguir.

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

O compilador adiciona 4000 a todos os números de aviso que estejam entre 0 e 999.

Para os números de aviso no intervalo de 4700 a 4999, que são os associados à geração de códigos, o estado do aviso em vigor quando o compilador encontra a chave aberta de uma função ficará em vigor pelo restante da função. Usar o pragma de warning na função para alterar o estado de um aviso que tem um número maior que 4699 só entrará em vigor depois do término da função. O exemplo a seguir mostra a colocação correta de pragmas de warning para desabilitar uma mensagem de aviso de geração de código e, depois, para restaurá-la.

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

Em um corpo de função, a configuração mais recente do pragma de warning será aplicada à função inteira.

Enviar por push e mostrar

O pragma de warning também oferece suporte à sintaxe a seguir.

#pragma warning( push [ ,n ] )

#pragma warning( pop )

Onde n representa um nível de aviso (de 1 a 4).

O pragma de warning( push ) armazena o estado atual de aviso de cada aviso. O pragma de warning( push, n) armazena o estado atual de cada aviso e define o nível de aviso global para n.

O pragma de warning( pop ) mostra o último estado de aviso enviado por push para a pilha. Todas as modificações feitas no estado de aviso entre push e pop serão desfeitas. Considere este exemplo:

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

No final desse código, pop restaura o estado de todos os avisos (inclui 4705, 4706, 4707) e o que era no início do código.

Quando você grava arquivos de cabeçalho, pode usar push e pop para garantir que as alterações de estado de aviso feitas por um usuário não impeçam que os cabeçalhos sejam compilados corretamente. Use push no início do cabeçalho e pop no final. Por exemplo, se você tiver um cabeçalho não compilado de forma limpa no nível de aviso 4, o código a seguir alteraria o nível de aviso para 3 e restauraria o nível de aviso original no final do cabeçalho.

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

Para obter mais informações sobre as opções do compilador que ajudam a suprimir avisos, consulte /FI e /w.

Consulte também

Referência

Diretivas Pragma e a palavra-chave __Pragma