C6216
upozornění C6216: cast kompilátor vložen mezi sémanticky různých typů: typ logická hodnota HRESULT
Toto upozornění znamená Boolean je používán jako HRESULT bez se explicitně nádech.Typy logických označují úspěch nenulovou hodnotu; Úspěch (S_OK) v HRESULT je označena hodnotou 0.Hodnota typické selhání funkce, které vrací logickou hodnotu NEPRAVDA je stav úspěch při zkoušce jako HRESULT.Je to pravděpodobně vést k nesprávné výsledky.
Příklad
Následující kód vygeneruje toto upozornění:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
HRESULT f( REFGUID riid1, REFGUID riid2 )
{
// code ...
return IsEqual(riid1, riid2);
}
Chcete-li opravit toto upozornění, použijte následující kód:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
HRESULT f( REFGUID riid1, REFGUID riid2 )
{
if (IsEqual(riid1, riid2) == TRUE)
{
// code ...
return S_OK;
}
else
{
// code ...
return E_FAIL;
}
}
Pro toto upozornění SCODE typu je ekvivalentní HRESULT.
Další informace naleznete v Bylo úspěšně DOKONČENO makro a se nezdařilo makro.