C6215

更新:2007 年 11 月

警告 C6215:语义不同的整数类型之间的强制转换: Boolean 类型转换为 HRESULT

此警告意味着布尔型被强制转换为 HRESULT。布尔值类型用非零值表示成功,而 HRESULT 中的成功 (S_OK) 则由值 0 来表示。将布尔值类型强制转换为 HRESULT,然后在测试表达式中使用它将产生错误的结果。

当将布尔值用作 SUCCEEDED 或 FAILED 宏(它显式地将参数强制转换成 HRESULT)的参数时,经常会出现此警告。

示例

下面的代码生成此警告:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

通常,只应将 SUCCEEDED 或 FAILED 宏应用于 HRESULT。

若要更正此警告,请使用下面的代码:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE) 
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

请参见

其他资源

SUCCEEDED

FAILED