Udostępnij za pośrednictwem


C6225

Ostrzeżenie C6225: niejawne rzutowanie pomiędzy semantycznie różnymi typami całkowitymi: przypisywanie 1 lub TRUE do HRESULT.Rozważ w zamian, użycie S_FALSE

To ostrzeżenie wskazuje, że HRESULT jest przypisywany lub zainicjowany z wartością wynoszącą jawne 1.Typy Boolean wskazują sukces przez wartość nie będącą zerem; sukces (S_OK) w HRESULT jest wskazywany przez wartość 0.To ostrzeżenie jest często spowodowane przypadkową pomyłką pomiędzy typami Boolean i HRESULT.Powinna być używana symboliczna stała S_OK do wskazania sukcesu.

Przykład

W poniższym kodzie, przypisanie HRESULT generuje ostrzeżenie:

#include <windows.h>

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

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

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

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

Aby wskazać błąd, należy użyć E_FAIL lub innej stałej.

Aby uzyskać więcej informacji, zobacz jeden z następujących tematów:

SUCCEEDED

FAILED