C6230
Aviso C6230: conversão implícita entre tipos inteiros semanticamente diferentes: usando o HRESULT em um contexto booliano
Este aviso indica que um hardware HRESULT está sendo usado em um contexto, sistema autônomo if demonstrativo, onde um resultado booliano é esperado. Isso provavelmente produzir resultados incorretos.Por exemplo, o valor sucesso típico para HRESULT (S_OK) for falsa quando ele é testado sistema autônomo um valor booliano.
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, a SUCCEEDED ou FAILED macro deve ser usada para testar o valor das 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 esse aviso, o SCODE tipo é equivalente a HRESULT.