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