Udostępnij za pośrednictwem


C6226

ostrzeżenie C6226: niejawne rzutowanie pomiędzy semantycznie różnymi typami całkowitymi: przypisywanie -1 do HRESULT.Rozważ w zamian, użycie E_FAIL.

To ostrzeżenie wskazuje, że HRESULT jest przypisywany lub inicjowany z wartością wynoszącą jawne -1.To ostrzeżenie jest często spowodowane przypadkową pomyłką pomiędzy typami integer i HRESULT.Powinna być używana symboliczna stała S_OK do wskazania sukcesu.Aby wskazać błąd, należy stosować stałe symboliczne, począwszy od E_constant.

Aby uzyskać więcej informacji, zobacz makra POWODZENIE i NIEPOWODZENIE.

Przykład

Poniższy kod generuje to ostrzeżenie:

#include <windows.h>

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

Aby poprawić to ostrzeżenie, należy użyć następującego kodu:

#include <windows.h>

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

W przypadku tego ostrzeżenia typ SCODE jest równoważny HRESULT.