Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Como especificar informações de código adicionais usando
Você pode fornecer dicas para a ferramenta de análise de código para código C/C++ que ajudam no processo de análise e reduzem avisos. Para fornecer informações adicionais, use a seguinte macro de função:
_Analysis_assume_( expr )
expr – qualquer expressão supostamente avaliada como verdadeira.
A ferramenta de análise de código pressupõe que a condição representada pela expressão expr seja verdadeira no ponto em que a função é exibida. E, ele permanece verdadeiro até expr ser alterado, por exemplo, por atribuição a uma variável.
Observação
_Analysis_assume_ não afeta a otimização de código. Fora da ferramenta de análise de código, _Analysis_assume_ é definida como uma operação sem operações.
Exemplo
O código a seguir usa _Analysis_assume_ para corrigir o aviso de análise de código C6388:
#include <windows.h>
#include <sal.h>
// Requires pc to be null.
void f(_Pre_null_ char* pc);
// Calls free and sets ch to null.
void FreeAndNull(char** ch);
void test()
{
char* pc = (char*)malloc(5);
FreeAndNull(&pc);
_Analysis_assume_(pc == NULL);
f(pc);
}
_Analysis_assume_ deve ser usado como último recurso. Devemos primeiro tentar tornar os contratos das funções mais precisos. Neste caso, poderíamos melhorar o contrato de FreeAndNull em vez de usar _Analysis_assume_:
#include <windows.h>
#include <sal.h>
// Requires pc to be null.
void f(_Pre_null_ char* pc);
// Calls free and sets ch to null.
_At_(*ch, _Post_null_)
void FreeAndNull(char** ch);
void test()
{
char* pc = (char*)malloc(5);
FreeAndNull(&pc);
f(pc);
}