Compartir a través de


C6226

Actualización: noviembre 2007

C6226

Advertencia C6226: Conversión implícita entre tipos enteros semánticamente diferentes: asignando -1 a HRESULT. Considere utilizar en su lugar E_FAIL

Esta advertencia indica que se está asignando o inicializando un HRESULT con el valor de -1 explícito. Esta advertencia se produce con frecuencia por una confusión no intencionada de los tipos integrales y de HRESULT. Para indicar el éxito, debe utilizarse la constante simbólica S_OK. Para indicar el error, se deben utilizar las constantes simbólicas que comienzan con E_constant.

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.

Vea también

Otros recursos

SUCCEEDED

FAILED