C6214
upozornění C6214: nádech mezi celé sémanticky různé typy: HRESULT typu Boolean
Toto upozornění znamená, že HRESULT dopadá na typu Boolean.Hodnota úspěch (S_OK) z HRESULT se rovná 0.Však 0 označuje selhání typu Boolean.Obsazení HRESULT na logickou hodnotu typu a potom pomocí výrazu test povede nesprávný výsledek.Toto upozornění někdy dochází, pokud HRESULT uložena v booleovské proměnné.Jakékoli srovnání, který používá Logická proměnná test HRESULT úspěch nebo selhání může vést k nesprávné výsledky.
Příklad
Následující kód vygeneruje toto upozornění:
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if ((BOOL)hr) // warning 6214
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
Chcete-li opravit toto upozornění, použijte následující kód:
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
Pro toto upozornění SCODE typu je ekvivalentní HRESULT.
Obvykle SUCCEEDED nebo FAILED makro použít k testování hodnoty HRESULT.
Další informace naleznete v následujících tématech: