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


C6031

Обновлен: Ноябрь 2007

C6031

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

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

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

Пример

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

#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 ...
  }
}

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

#include <codeanalysis\sourceannotations.h>
[returnvalue:SA_Post(MustCheck=SA_Yes)] bool func( );

void test_f()

{

func( ); //return value ignored

}

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

void test_f()

{

if( func( ) )

{

//code...

}

}

См. также

Основные понятия

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

Ссылки

fopen_s, _wfopen_s

MustCheck