C6230
警告 C6230:语义不同的整数类型之间的隐式强制转换: 在 Boolean 上下文中使用 HRESULT
此警告意味着在应当使用布尔值结果的上下文(如 if 语句)中使用了 bare HRESULT。 这有可能会产生不正确的结果。 例如,在作为布尔值测试时,HRESULT 的典型成功值 (S_OK) 是 false。
示例
下面的代码生成此警告:
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (hr)
{
// code ...
}
else
{
// code ...
}
}
在大多数情况下,应将 SUCCEEDED 或 FAILED 宏用来测试 HRESULT 的值。 若要更正此警告,请使用下面的代码:
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// code ...
}
else
{
// code ...
}
}
对于此警告,SCODE 类型等效于 HRESULT。