Поделиться через


C6031

предупреждение C6031: Возвращаемое значение пропущено: <функция> может вернуть непредусмотренное значение

Это предупреждение означает, что вызывающая функция не проверяет возвращаемое значения вызова функции, который сообщает этим значением о сбое.В зависимости от вызываемой функции это может привести к псевдослучайным неполадкам программы, включая сбои и повреждение данных в условиях ошибки или недостатка ресурсов.

Как правило, небезопасно предполагать, что всегда будет успешен вызов к функции, для которого потребуются дисковые ресурсы, сетевые ресурсы, память или прочие ресурсы.Вызывающий объект должен всегда проверять возвращаемое значение и должным образом обрабатывать ошибки.Также рассмотрите использование аннотации _Must_inspect_result_, которая проверяет, чтобы значение было проверено с пользой.

Пример

Данное предупреждение создается в следующем коде:

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

Чтобы исправить это предупреждение, проверяйте возвращаемое значение функции, как показано в следующем коде:

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

В следующем коде для исправления этого предупреждения используется безопасная функция fopen_s:

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

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

Это предупреждение также возникает, если вызывающий объект пропускает возвращаемое значение функции со свойством _Check_return_, как показано в следующем примере кода.

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

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

Чтобы исправить предыдущее предупреждение, проверяйте возвращаемое значение, как показано в следующем коде:

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

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

См. также

Ссылки

fopen_s, _wfopen_s

Другие ресурсы

Общие сведения о заметках

MustCheck