C6215
Aviso C6215: converter entre tipos inteiros semanticamente diferentes: um valor booleano tipo HRESULT
Este aviso indica que um valor booleano está sendo convertido em um HRESULT.Tipos booleanos indicam êxito por um valor diferente de zero, enquanto o sucesso (S_OK) em HRESULT é indicado por um valor de 0.A projeção de um valor booleano digite para um HRESULT e, em seguida, usá-lo em uma expressão de teste produzirá um resultado incorreto.
Esse aviso ocorrer com freqüência quando um valor booleano que é usado como um argumento para SUCCEEDED ou FAILED macro, que explicitamente projeta seus argumentos para uma HRESULT.
Exemplo
O código a seguir gera este aviso:
#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 ...
}
}
Geralmente, o SUCCEEDED ou FAILED macros só devem ser aplicadas a HRESULT.
Para corrigir esse aviso, use o código a seguir:
#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 obter mais informações, consulte Macro bem-sucedida e FAILED Macro