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.