C6230
Aggiornamento: novembre 2007
C6230
avviso C6230: cast implicito tra tipi integer semanticamente diversi: utilizzo di HRESULT in un contesto Booleano
L'avviso indica che viene utilizzato un HRESULT bare in un contesto, ad esempio l'istruzione if in cui è previsto un risultato Booleano. È probabile che ciò produca risultati errati. Il valore che solitamente indica l'esito positivo per HRESULT (S_OK) risulta false quando viene testato come valore booleano.
Esempio
Il codice seguente genera questo avviso:
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (hr)
{
// code ...
}
else
{
// code ...
}
}
Nella maggior parte dei casi, per verificare il valore di un tipo HRESULT è necessario utilizzare la macro SUCCEEDED o FAILED. Per risolvere il problema, utilizzare il codice seguente:
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// code ...
}
else
{
// code ...
}
}
Ai fini del presente avviso, il tipo SCODE equivale a HRESULT.