Condividi tramite


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.Valutare l'opportunità di utilizzare l'annotazione _Must_inspect_result_, che controlla che il valore venga analizzato in modo utile.

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à _Check_return_, come illustrato nel codice seguente.

#include <sal.h>
_Check_return_ bool func();

void test_f()
{
    func(); //  Warning C6031
}

Per risolvere il problema precedente, controllare il valore restituito come indicato nel codice seguente:

#include <sal.h>
_Check_return_ bool func();

void test_f()
{
    if( func() ) {
        // code …
    }
}

Vedere anche

Riferimenti

fopen_s, _wfopen_s

Altre risorse

Cenni preliminari sull'annotazione

MustCheck