Partilhar via


C28193

C28193 de aviso: A variável contém um valor que deve ser examinado

Este aviso indica que a função de chamada não está verificando o valor da variável especificada, que foi fornecido por uma função.O valor retornado é anotado com a anotação de _Check_return_ , mas a função de chamada não estiver usando o valor ou está substituindo o valor sem examinar.

Esse erro é semelhante ao aviso C6031, mas é relatado somente quando o código não testa ou não examina o valor da variável, como pelo uso dele em uma comparação.Simplesmente atribuindo o valor não é considerado um exame suficiente para evitar esse aviso.A serrilha o resultado fora da função é considerada uma discussão suficiente, mas o resultado próprio deve ser anotado com _Check_return_.

Determinadas funções (como) strlenexistem quase exclusivamente para seu valor de retorno, o que ele faz sentido para que eles tenham a anotação de _Check_return_ .Para essas funções, a ferramenta de análise de código pode relatar este aviso quando o valor de retorno não é usado.Isso geralmente indica que o código está incorreto, por exemplo, pode conter código residual que pode ser excluído.No entanto, em algumas instâncias raras, o valor de retorno não é usado intencionalmente.O mais comum dessas instâncias são onde um comprimento da cadeia de caracteres é retornado mas não usado realmente antes que qualquer outro teste é feito.O outro teste causa um caminho a ser simulado onde o comprimento da cadeia de caracteres acaba não ser usado.Quando isso acontece, o código pode estar correto, mas pode ser ineficiente.

Há duas estratégias principais para manipular esses casos onde o valor de retorno é não utilizada:

Reordenar o código para que o comprimento da cadeia de caracteres é retornado somente ao longo do caminho onde é necessário.

Use #pragma que avisará para suprimir o aviso--se reorganizando o código, você deve fazer o código muito complexo ou de outra forma menos útil.

Exemplo

O exemplo de código gera este aviso:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...

O exemplo de código a seguir evita este aviso:

IoGetDmaAdapter(pPDO, &DevDesc, &nMapRegs);
...
if (nMapRegs < MIN_REQUIRED_MAPS) {
...
}