C6226
Advertencia C6226: Conversión implícita entre tipos enteros semánticamente diferentes: asignando -1 a HRESULT.Considere usar en su lugar E_FAIL.
Esta advertencia indica que HRESULT se va a asignar o inicializar con el valor de -1 explícito.Esta advertencia se genera con frecuencia a causa de una confusión accidental de los tipos integer y HRESULT.Para indicar una operación correcta, debe utilizarse la constante simbólica S_OK.Para indicar el error, se deben utilizar las constantes simbólicas que comienzan con E_constant.
Para obtener más información, vea las macros SUCCEEDED y FAILED.
Ejemplo
El código siguiente genera esta advertencia:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = -1;
// code ...
}
else
{
// code ...
}
}
Para corregir esta advertencia, utilice el código siguiente:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = E_FAIL;
// code ...
}
else
{
// code ...
}
}
Para esta advertencia, el tipo SCODE es equivalente a HRESULT.