Sdílet prostřednictvím


C6225

upozornění C6225: implicitní přetypování mezi celé sémanticky různé typy: přiřazení 1 nebo PRAVDA na HRESULT.Zvažte použití S_FALSE místo

Toto upozornění znamená, že HRESULT je přiřazen nebo inicializován s hodnotou explicitní 1.Typy logických označují úspěch nenulovou hodnotu; Úspěch (S_OK) v HRESULT je označena hodnotou 0.Toto upozornění často způsobeny náhodným záměně logická a HRESULT typy.Označuje úspěch Symbolická konstanta S_OK by měla být použita.

Příklad

Následující kód přiřazení HRESULT generuje toto upozornění:

#include <windows.h>

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

Chcete-li opravit toto upozornění, použijte následující kód:

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

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

Označuje selhání, E_FAIL, nebo by měly být použity jiné konstanta.

Další informace naleznete v následujících tématech:

ÚSPĚŠNĚ

SELHÁNÍ