C6031
Aggiornamento: novembre 2007
C6031
avviso C6031: valore restituito ignorato: <funzione> potrebbe restituire un valore imprevisto
L'avviso indica che la funzione chiamante non sta controllando il valore restituito da una chiamata a una funzione che segnala l'esito negativo. A seconda di quale sia la funzione chiamata, l'errore può portare a un malfunzionamento del programma apparentemente casuale, che include arresti anomali del sistema e danneggiamenti di dati in condizioni di errore o in situazioni di risorse limitate.
In generale, non è sicuro presumere che una chiamata a una funzione che richiede spazio su disco, rete, memoria o altre risorse abbia sempre esito positivo. Il chiamante dovrebbe sempre controllare il valore restituito e gestire i casi di errore nel modo appropriato.
Esempio
Il codice seguente genera questo avviso:
#include <stdio.h>
void f( )
{
fopen( "test.c", "r" ); // return value ignored
// code ...
}
Per risolvere il problema, controllare il valore restituito della funzione come indicato nel codice seguente:
#include <stdio.h>
void f( )
{
FILE *stream;
if((stream = fopen( "test.c", "r" )) == NULL )
return;
// code ...
}
Per risolvere il problema nel codice seguente viene utilizzata la funzione protetta fopen_s:
#include <stdio.h>
void f( )
{
FILE *stream;
errno_t err;
if( (err = fopen_s( &stream, "test.c", "r" )) !=0 )
{
// code ...
}
}
L'avviso viene generato anche se il chiamante ignora il valore restituito di una funzione annotata con la proprietà MustCheck, come illustrato nel codice seguente:
#include <codeanalysis\sourceannotations.h>
[returnvalue:SA_Post(MustCheck=SA_Yes)] bool func( );
void test_f()
{
func( ); //return value ignored
}
Per risolvere il problema precedente, controllare il valore restituito come indicato nel codice seguente:
void test_f()
{
if( func( ) )
{
//code...
}
}
Vedere anche
Concetti
Cenni preliminari sull'annotazione