Compartir a través de


C6230

Actualización: noviembre 2007

C6230

Advertencia C6230: Conversión implícita entre tipos enteros semánticamente diferentes: usando HRESULT en un contexto booleano.

Esta advertencia indica que se utiliza un HRESULT vacío en un contexto, como la instrucción if , en que se espera un resultado booleano. Es probable que esto produzca resultados incorrectos. Por ejemplo, el valor de éxito típico de HRESULT (S_OK) es false cuando se prueba como booleano.

Ejemplo

El código siguiente genera esta advertencia:

#include <windows.h>

VOID f( )
{
  LPMALLOC pMalloc;
  HRESULT hr = CoGetMalloc(1, &pMalloc);
  
  if (hr)
  {
    
    // code ...
  }
  else
  {
    // code ...
  }
}

Normalmente, se debe utilizar la macro SUCCEEDED o FAILED para probar el valor de HRESULT. Para corregir esta advertencia, utilice el código siguiente:

#include <windows.h>

VOID f( )
{
  LPMALLOC pMalloc;
  HRESULT hr = CoGetMalloc(1, &pMalloc);
  
  if (SUCCEEDED(hr))
  {
    
    // code ...
  }
  else
  {
    // code ...
  }
}

Para esta advertencia, el tipo SCODE es equivalente a HRESULT.

Vea también

Otros recursos

SUCCEEDED

FAILED