C6226
Aviso C6226: Conversão implícita entre tipos inteiros semanticamente diferentes: atribuindo -1 para o HRESULT. Considere o uso E_FAIL.
Este aviso indica que uma HRESULT está sendo atribuído ou inicializado com um valor explícito um-de 1. Esse aviso é frequentemente provocado por confusão acidental de inteiro e HRESULT tipos. Para indicar êxito, a constante simbólico S_OK deve ser usado. Para indicar a falha, as constantes simbólicas, começando com o E_constant devem ser usadas.
Para obter mais informações, consulte o SUCCEEDED e Falha macros.
Exemplo
O código a seguir gera este aviso:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = -1;
// code ...
}
else
{
// code ...
}
}
Para corrigir esse aviso, use o seguinte código:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = E_FAIL;
// code ...
}
else
{
// code ...
}
}
Para este aviso, o SCODE tipo é equivalente a HRESULT.