Sdílet prostřednictvím


C6031

Upozornění C6031: Vrácená hodnota ignorována: <funkce> může vrátit neočekávanou hodnotu.

Toto upozornění znamená, že volající funkce nekontroluje vrácenou hodnotu volání funkce, která signalizuje selhání prostřednictvím návratové hodnoty.V závislosti na funkci, která je volána, může tato vada vést k zdánlivě náhodnému nesprávnému chování programu, včetně jeho havárií a poškození dat v chybových stavech nebo v situacích s nedostatkem prostředků.

Obecně není bezpečné předpokládat, že volání funkce vyžadující disk, síť, paměť či jiné prostředky bude vždy úspěšné.Volající by měl vždy zkontrolovat návratovou hodnotu a odpovídajícím způsobem zpracovat chyby.Zvažte také použití anotace _Must_inspect_result_, která zjistí, zda je hodnota zkontrolována užitečným způsobem.

Příklad

Následující kód generuje toto upozornění:

#include <stdio.h>
void f( )
{
  fopen( "test.c", "r" ); // return value ignored
  // code ...
}

Chcete-li opravit toto upozornění, zkontrolujte návratovou hodnotu funkce, jak je znázorněno v následujícím kódu:

#include <stdio.h>
void f( )
{
  FILE *stream;
  if((stream = fopen( "test.c", "r" )) == NULL ) 
    return;
  // code ...
}

Následující kód opravuje toto upozornění použitím bezpečné funkce fopen_s:

#include <stdio.h>
void f( )
{
  FILE *stream;
  errno_t err;

  if( (err  = fopen_s( &stream, "test.c", "r" )) !=0 )
  {
    // code ...
  }
}

Toto upozornění se vygeneruje také, pokud volající ignoruje návratovou hodnotu funkce označené vlastností _Check_return_, jak je znázorněno v následujícím kódu.

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

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

Chcete-li opravit předchozí upozornění, zkontrolujte návratovou hodnotu, jak je znázorněno v následujícím kódu:

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

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

Viz také

Referenční dokumentace

fopen_s, _wfopen_s

Další zdroje

Přehled poznámek

MustCheck