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 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 teve êxito ou FAILED macro deve ser usada para testar o valor da HRESULT.Para corrigir esse aviso, use o código a seguir:
#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.