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