C6031
Advertencia C6031: Se omitió el valor devuelto. <función> podría devolver un valor inesperado
Esta advertencia indica que la función de llamada no está comprobando el valor devuelto de una llamada a función que señala los errores a través de su valor devuelto.Dependiendo de cuál es la función a la que se está llamando, este defecto puede conducir a errores de comportamiento del programa aparentemente aleatorios, incluidos bloqueos y daños en los datos, en situaciones de error o de escasez de recursos.
En general, no es seguro suponer que una llamada a una función que requiera recursos de disco, red, memoria u otro tipo siempre se ejecutará correctamente.El llamador debe comprobar siempre el valor devuelto y controlar de la forma adecuada los casos de error.También puede utilizar la anotación _Must_inspect_result_, que comprueba que el valor se examina de una forma útil.
Ejemplo
El código siguiente genera esta advertencia:
#include <stdio.h>
void f( )
{
fopen( "test.c", "r" ); // return value ignored
// code ...
}
Para corregir esta advertencia, compruebe el valor devuelto de la función como se muestra en el siguiente código:
#include <stdio.h>
void f( )
{
FILE *stream;
if((stream = fopen( "test.c", "r" )) == NULL )
return;
// code ...
}
El código siguiente utiliza la función fopen_s segura para corregir esta advertencia:
#include <stdio.h>
void f( )
{
FILE *stream;
errno_t err;
if( (err = fopen_s( &stream, "test.c", "r" )) !=0 )
{
// code ...
}
}
Esta advertencia también se genera si el llamador omite el valor devuelto de una función anotada con la propiedad _Check_return_ como se muestra en el código siguiente:
#include <sal.h>
_Check_return_ bool func();
void test_f()
{
func(); // Warning C6031
}
Para corregir la advertencia anterior, compruebe el valor devuelto como se muestra en el código siguiente:
#include <sal.h>
_Check_return_ bool func();
void test_f()
{
if( func() ) {
// code …
}
}