C6031
C6031 de aviso: valor de retorno ignorado: <function> pôde retornar valor inesperado
Este aviso indica que a função de chamada não está verificando o valor de retorno de uma função chamada da falha dos sinais através de seu valor de retorno.Dependendo da função é chamada, este empecilho pode levar a incorreto comportamento convenientemente aleatório do programa, incluindo 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 para funcionar exigem o disco, a rede, a memória, ou outros recursos funcionará com sempre.O chamador sempre deve verificar o valor de retorno e tratar caso de erro adequadamente.Considere usar também nota de _Must_inspect_result_ , que verifica o valor é examinado em uma maneira útil.
Exemplo
o seguinte código gera este aviso:
#include <stdio.h>
void f( )
{
fopen( "test.c", "r" ); // return value ignored
// code ...
}
Para corrigir este aviso, verificar o valor de retorno da função conforme mostrado no código o seguir:
#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 fopen_s segura para corrigir esse erro:
#include <stdio.h>
void f( )
{
FILE *stream;
errno_t err;
if( (err = fopen_s( &stream, "test.c", "r" )) !=0 )
{
// code ...
}
}
Esse erro é gerado também se o chamador ignora o valor de retorno de uma função anotada com a propriedade de _Check_return_ conforme mostrado no código a seguir.
#include <sal.h>
_Check_return_ bool func();
void test_f()
{
func(); // Warning C6031
}
Para corrigir o aviso anterior, verificar o valor de retorno conforme mostrado no código o seguir:
#include <sal.h>
_Check_return_ bool func();
void test_f()
{
if( func() ) {
// code …
}
}