Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Permite a modificação seletiva do comportamento das mensagens de aviso do compilador.
Sintaxe
#pragma warning(
[ ]
[ ... ]
[ n ]
#pragma warning( pop )
Comentários
Os seguintes parâmetros especificadores de aviso estão disponíveis.
| especificador de aviso | Significado |
|---|---|
| , , , | Aplique o nível dado aos avisos especificados. Por exemplo: desativa o aviso 5033 (normalmente um aviso de nível 1), a menos que o nível de aviso esteja definido como ou superior. Também pode ser usado para ativar 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 em seu nível padrão, documentado. Para obter mais informações, consulte Avisos do compilador que estão desativados por padrão. |
disable |
Não emita as mensagens de aviso especificadas. A propriedade opcional é permitida. |
error |
Informe os avisos especificados como erros. |
once |
Exiba a(s) mensagem(ões) especificada(s) apenas uma vez. |
suppress |
Envia por push o estado atual do na pilha, desativa o aviso especificado para a próxima linha e, em seguida, exibe a pilha de aviso para que o estado seja redefinido. |
justification |
Cadeia opcional que descreve a razão para desativar ou suprimir o aviso. Introduzido no Visual Studio 2022 versão 17.14. |
A instrução de código a seguir ilustra que um parâmetro pode conter vários números de aviso e que vários parâmetros de podem ser especificados na mesma diretiva .
#pragma warning( disable : 4507 4034; once : 4385; error : 164 )
No entanto, quando o campo está presente, apenas um número de aviso pode ser especificado. A instrução de código a seguir ilustra o uso do campo.
#pragma warning( disable : 4507, justification : "This warning is disabled" )
Use o campo para explicar porque é que um aviso está a ser desativado ou suprimido. O campo é suportado apenas para o e . A justificação aparece na saída do Formato de Intercâmbio de Resultados de Análise Estática (SARIF) quando a opção é especificada. Seu valor é um literal de cadeia estreita codificada em UTF-8. Para gerar um ficheiro SARIF, use a opção compilador.
Esta diretiva é funcionalmente equivalente ao seguinte código:
// Disable warning messages 4507 and 4034.
#pragma warning(disable : 4507 4034)
// 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 da função permanece em vigor para o resto da função. O uso do 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 desabilitar uma mensagem de aviso de geração de código e, em seguida, 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 compiling Test()
}
int main()
{
int x;
int y = x; // C4700
}
Observe que em todo um corpo de função, a última configuração do estará em vigor para toda a função.
Empurrar e estourar
O também suporta a sintaxe a seguir, onde o parâmetro opcional n representa um nível de aviso (1 a 4).
#pragma warning( push [ , n ] )
#pragma warning( pop )
O armazena o estado de aviso atual para cada aviso. O armazena o estado atual de cada aviso e define o nível de alerta global como n.
O exibe o último estado de aviso empurrado para a pilha. Todas as alterações feitas no estado de aviso entre e 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 deste código, 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 e 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 no início do cabeçalho e no final. Por exemplo, você pode ter um cabeçalho que não compila corretamente no nível de aviso 4. O código a seguir altera o nível de aviso para 3 e, em seguida, restaura o nível de aviso original no final do cabeçalho.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
Escolher entre e
Ambos e oferecem controlo detalhado sobre a supressão de avisos:
-
[[gsl::suppress]]apenas suprime avisos emitidos pelo Microsoft C++ Code Analysis. Use-o com as verificações das Diretrizes Centrais em C++, que podem ser aplicadas a um âmbito ou a uma declaração específica. - pode ser usado para qualquer aviso de compilador. É útil quando precisas de suprimir um aviso num bloco de código específico sem alterar significativamente a estrutura do código.
Sempre que possível, use [[gsl::suppress]] para suprimir avisos de Code Analysis do Microsoft C++.
Para obter mais informações sobre as opções do compilador que ajudam a suprimir avisos, consulte e .
Ver também
diretivas Pragma e as palavras-chave e