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 属性批注的函数的返回值,也会生成此警告,如下面的代码所示:

#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