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 una operación correcta mediante un valor distinto de cero, mientras que la operación correcta (S_OK) en HRESULT se indica mediante un valor de 0.Convertir un tipo booleano en un HRESULT y, a continuación, utilizarlo en una expresión de prueba dará lugar a un resultado 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 solo se deben 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
}
}
Para obtener más información, vea Macro TENIDA ÉXITO y Macro FAILED