C6031
Aviso C6031: valor de retorno ignorado: <função> pôde retornar valor inesperado
Esse aviso indicar que a função de chamada não está verificando o valor de retorno de uma chamada de função que deixam de semáforo no valor de retorno.Dependendo de qual a função está sendo chamada, esse defeito pode resultar em comportamento ruim aparentemente aleatória de programa, inclusive falhas e corrupções de dados em condições de erro ou em situações de baixo recurso.
Em geral, não é seguro suponha que uma chamada a funcionar exigindo o disco, a rede, a memória, ou outros recursos sempre terá êxito.O chamador deve sempre verifique o valor de retorno e tratar casos de erro adequadamente.Considere também usar a anotação de _Must_inspect_result_ , que verifica se o valor ser verificado em uma maneira útil.
Exemplo
O código a seguir gera este aviso:
#include <stdio.h>
void f( )
{
fopen( "test.c", "r" ); // return value ignored
// code ...
}
Para corrigir esse aviso, verifique o valor de retorno da função conforme mostrado no seguinte código:
#include <stdio.h>
void f( )
{
FILE *stream;
if((stream = fopen( "test.c", "r" )) == NULL )
return;
// code ...
}
O código a seguir usa a função segura fopen_s para corrigir esse aviso:
#include <stdio.h>
void f( )
{
FILE *stream;
errno_t err;
if( (err = fopen_s( &stream, "test.c", "r" )) !=0 )
{
// code ...
}
}
Esse aviso também é gerado se o chamador ignora o valor de retorno de uma função anotadas com a propriedade de _Check_return_ conforme mostrado no seguinte código.
#include <sal.h>
_Check_return_ bool func();
void test_f()
{
func(); // Warning C6031
}
Para corrigir o aviso anterior, verifique o valor de retorno conforme mostrado no seguinte código:
#include <sal.h>
_Check_return_ bool func();
void test_f()
{
if( func() ) {
// code …
}
}