Compartir a través de


C6215

Actualización: noviembre 2007

C6215

Advertencia C6215: Conversión entre diferentes tipos de enteros semánticamente diferentes: un tipo booleano de HRESULT

Esta advertencia indica que se convierte un booleano a un HRESULT. 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. Si se convierte un tipo booleano a un HRESULT y se utiliza en una expresión de prueba, el resultado obtenido será incorrecto.

Esta advertencia suele producirse cuando se utiliza un booleano como argumento para las macros SUCCEEDED o FAILED, que convierten de manera explícita sus argumentos a un HRESULT.

Ejemplo

El código siguiente genera esta advertencia:

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

En general, las macros SUCCEEDED o FAILED sólo se debe aplicar a HRESULT.

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

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE) 
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

Vea también

Otros recursos

SUCCEEDED

FAILED