C6216
Aviso C6216: inserido o compilador conversão entre tipos integrais semanticamente diferentes: um valor booleano tipo HRESULT
Este aviso indica que um valor booleano está sendo usado como um HRESULT sem explicitamente que está sendo convertido.Tipos booleanos indicam êxito por um valor diferente de zero; sucesso (S_OK) em HRESULT é indicado por um valor de 0.O valor típico de falha para funções que retornam um Booleano false é um status de êxito quando ele é testado como um HRESULT.Isso provavelmente levar a resultados incorretos.
Exemplo
O código a seguir gera este aviso:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
HRESULT f( REFGUID riid1, REFGUID riid2 )
{
// code ...
return IsEqual(riid1, riid2);
}
Para corrigir esse aviso, use o código a seguir:
#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 este aviso, o SCODE tipo é equivalente a HRESULT.
Para obter mais informações, consulte Macro bem-sucedida e FAILED Macro.