C6215
警告 C6215:语义不同的整数类型之间的强制转换: Boolean 类型转换为 HRESULT
此警告意味着布尔型被强制转换为 HRESULT。 Boolean 类型通过非零值指示成功,而 HRESULT 中的成功 (S_OK) 则是由值 0 指示。 如果将 Boolean 类型强制转换为 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 Macro(SUCCEEDED 宏)和 FAILED Macro(FAILED 宏)