C6216
Aviso C6216: inserido de compilador conversão entre tipos integrais semanticamente diferentes: Digite um valor booliano para HRESULT
Este aviso indica que um valor booliano está sendo usado sistema autônomo um HRESULT sem explicitamente que está sendo convertido. Tipos booliano indicam êxito por um valor diferente de zero; ( sucessoS_OK) na HRESULT é indicado por um valor de 0. O valor típico falha para funções que retornam um booliano false é um status de êxito quando ele é testado sistema autônomo 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 seguinte código:
#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 esse aviso, o SCODE tipo é equivalente a HRESULT.