Condividi tramite


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

Riferimenti

fopen_s, _wfopen_s

MustCheck