Compartir a través de


C6216

Actualización: noviembre 2007

C6216

Advertencia C6216: Conversión insertada por el compilador entre tipos de enteros semánticamente diferentes: un tipo booleano de HRESULT

Esta advertencia indica que se utiliza un booleano como HRESULT sin una conversión explícita. Los tipos booleanos indican el éxito mediante un valor distinto de cero, mientras que el éxito (S_OK) en HRESULT se indica mediante un valor de 0. El valor típico para las funciones que devuelven un valor booleano de false constituye un estado de éxito cuando se prueba como HRESULT. Es probable que esto produzca resultados incorrectos.

Ejemplo

El código siguiente genera esta advertencia:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // code ...
  return IsEqual(riid1, riid2);  
}

Para corregir esta advertencia, utilice el código siguiente:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual(riid1, riid2) == TRUE)
  {
    // code ...
    return S_OK;
  }
  else
  {
    // code ...
    return E_FAIL;
  }
}

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

Vea también

Otros recursos

SUCCEEDED

FAILED