Sdílet prostřednictvím


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.