Sdílet prostřednictvím


C6230

upozornění C6230: implicitní přetypování mezi celé sémanticky různých typů: použití HRESULT v logické souvislosti

Toto upozornění znamená, že úplné HRESULT je používán v kontextu, jako například if prohlášení, kde je očekávaný výsledek.To je pravděpodobně nesprávné výsledky.Například hodnota úspěch typické pro HRESULT (S_OK) je v při zkoušce jako logickou hodnotu NEPRAVDA.

Příklad

Následující kód vygeneruje toto upozornění:

#include <windows.h>

VOID f( )
{
  LPMALLOC pMalloc;
  HRESULT hr = CoGetMalloc(1, &pMalloc);
  
  if (hr)
  {
    
    // code ...
  }
  else
  {
    // code ...
  }
}

Ve většině případů proběhlo úspěšně nebo se nezdařilo makro použít k testování hodnoty HRESULT.Chcete-li opravit toto upozornění, použijte následující kód:

#include <windows.h>

VOID f( )
{
  LPMALLOC pMalloc;
  HRESULT hr = CoGetMalloc(1, &pMalloc);
  
  if (SUCCEEDED(hr))
  {
    
    // code ...
  }
  else
  {
    // code ...
  }
}

Pro toto upozornění SCODE typu je ekvivalentní HRESULT.