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