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: