warning
Permite a modificação seletiva do comportamento das 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 parâmetros de especificador de aviso a seguir estão disponíveis.
especificador de aviso |
Significado |
---|---|
1, 2, 3, 4 |
Aplica o nível de determinado para o aviso especificado (s).Isso também ativa um aviso especificado está desativada por padrão. |
default |
Redefina o comportamento do aviso para seu valor padrão.Isso também ativa um aviso especificado está desativada por padrão.O aviso será gerado em seu padrão, documentados, nível. Para obter mais informações, consulte Avisos do compilador são desativados por padrão. |
disable |
Não emita as mensagens de aviso especificado. |
error |
Relata os especificado avisos como erros. |
once |
Exiba as mensagens especificadas somente uma vez. |
suppress |
Empurra o estado atual do pragma na pilha, desativa o aviso especificado para a próxima linha e, em seguida, se desprenda a pilha de aviso para que o estado do pragma é redefinido. |
A instrução de código a seguir ilustra que uma warning-number-list parâmetro pode conter vários números de aviso e esse múltiplo warning-specifier parâmetros podem ser especificados na mesma diretiva pragma.
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
Isso é funcionalmente equivalente para o 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 qualquer número de aviso que está entre 0 e 999.
Para números de aviso no intervalo 4700-4999, que são aqueles associados com a geração de código, o estado de aviso de advertência em vigor quando o compilador encontra a chave de chave de abertura de uma função estará em vigor para o resto da função.Usando o warning pragma na função para alterar o estado de um aviso de que tem um número maior do que 4699 só terá efeito após o término da função.O exemplo a seguir mostra o posicionamento correto do warning pragmas para desativar uma mensagem de aviso de geração de código e, em seguida, restaurá-lo.
// 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, ao longo de uma função, corpo, a última configuração o warning pragma estará em vigor para a função inteira.
Push e Pop
O warning pragma também oferece suporte a sintaxe a seguir.
#pragma warning( push [ ,n ] )
#pragma warning( pop )
Onde n representa um nível de aviso (1 a 4).
O pragma warning( push ) armazena o estado atual do aviso para cada aviso.O pragma warning( push, n) armazena o estado atual para cada aviso e define o nível de aviso global como n.
O pragma warning( pop ) o último estado de aviso colocado na pilha de pops.Quaisquer alterações que você fez o 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) à que estava no início do código.
Quando você 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 impedem os cabeçalhos compilando corretamente.Use push no início do cabeçalho e pop no final.Por exemplo, se você tiver um cabeçalho que não sejam compilados corretamente no nível de aviso 4, o código a seguir seria alterar o nível de aviso para 3 e, em seguida, restaurar 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 o compilador opções que ajudam você suprimir avisos, consulte /FI e /w.