Sdílet prostřednictvím


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:

ÚSPĚŠNĚ

SELHÁNÍ