C6230
Aviso C6230: conversão implícita entre tipos inteiros semanticamente diferentes: usando o HRESULT em um contexto Boolean
Este aviso indica que um bare HRESULT está sendo usado em um contexto, como if a instrução, onde um resultado booleano é esperado. Isso provavelmente produzir resultados incorretos. Por exemplo, o valor típico de sucesso para HRESULT (S_OK) é false quando ele é testado como um valor booleano.
Exemplo
O código a seguir gera este aviso:
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (hr)
{
// code ...
}
else
{
// code ...
}
}
Na maioria das situações, o SUCCEEDED ou Falha macro deve ser usada para testar o valor de HRESULT. Para corrigir esse aviso, use o seguinte código:
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// code ...
}
else
{
// code ...
}
}
Para este aviso, o SCODE tipo é equivalente a HRESULT.