C6031
更新:2007 年 11 月
警告 C6031: 已忽略傳回值: <function> 可能傳回未預期的值
這則警告表示呼叫函式不會檢查發出其傳回值失敗信號之函式呼叫的傳回值。這項缺失會導致程式隨機發生何種錯誤行為,則會依據呼叫的函式而定,包括在發生錯誤或資源不足之情況下的損毀及資料毀損。
一般而言,假設要求磁碟、網路、記憶體或其他資源的呼叫函式一律會成功是不妥的。呼叫端應該一律要檢查傳回值,並適當地處理錯誤狀況。
範例
下列程式碼將產生出這個警告:
#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 屬性 (Property) 之函式的傳回值,也會產生這則警告,如下列範例所示:
#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...
}
}