Compartilhar via


warning pragma

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

Sintaxe

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

Observações

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

warning-specifier Significado
1, 2, 3, 4 Aplique o nível determinado aos avisos especificados. Também ativa um aviso especificado que está desativado por padrão.
default Redefina o comportamento de aviso para seu valor padrão. Também ativa um aviso especificado que está desativado por padrão. O aviso será gerado no nível padrão, documentado.

Para obter mais informações, consulte avisos do Compilador desativados por padrão.
disable Não emita as mensagens de aviso especificadas.
error Relate os avisos especificados como erros.
once Exiba as mensagens especificadas apenas uma vez.
suppress Envia por push o estado atual do pragma na pilha, desabilita o aviso especificado para a próxima linha e, em seguida, exibe a pilha de avisos para que o estado pragma seja redefinido.

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

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

Essa diretiva é funcionalmente equivalente ao seguinte código:

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

O compilador adiciona 4000 a qualquer número de aviso que esteja entre 0 e 999.

Os números de aviso no intervalo 4700-4999 estão associados à geração de código. Para esses avisos, o estado do aviso em vigor quando o compilador atinge a definição de função permanece em vigor para o restante da função. O uso do warningpragma na função para alterar o estado de um número de aviso maior que 4699 só entra em vigor após o final da função. O exemplo a seguir mostra o posicionamento correto de um warningpragma para desabilitar uma mensagem de aviso de geração de código e 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
}

Observe que, em todo o corpo da função, a última configuração do warningpragma estará em vigor para toda a função.

Efetuar push e pop

O warningpragma também dá suporte à sintaxe a seguir, em que o parâmetro opcional n representa um nível de aviso (1 a 4).

#pragma warning( push [ , n ] )

#pragma warning( pop )

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

O pragmawarning( pop ) exibe o último estado de aviso enviado para a pilha. Todas as alterações feitas no estado de aviso entre push e pop sã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 cada aviso (inclui 4705, 4706 e 4707) para o que era no início do código.

Ao escrever arquivos de cabeçalho, você 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, você pode ter um cabeçalho que não é compilado de forma limpa no nível de aviso 4. O código a seguir altera o nível de aviso para 3 e restaura 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

diretivas Pragma e as palavras-chave __pragma e _Pragma