Condividi tramite


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.

Vedere anche

Altre risorse

SUCCEEDED

FAILED