Condividi tramite


C6216

Aggiornamento: novembre 2007

C6216

avviso C6216: cast inserito dal compilatore tra tipi integer semanticamente diversi: da un tipo Boolean a HRESULT

L'avviso indica che è in uso un Boolean come HRESULT senza che sia stato eseguito il cast esplicito. I tipi Boolean indicano l'esito positivo mediante un valore diverso da zero, l'esito positivo (S_OK) in HRESULT è indicato da un valore 0. Il valore tipico dell'esito negativo per le funzioni che restituiscono un valore booleano false corrisponde allo stato di esito positivo dell'operazione quando viene testato come HRESULT. È probabile che ciò produca risultati errati.

Esempio

Il codice seguente genera questo avviso:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // code ...
  return IsEqual(riid1, riid2);  
}

Per risolvere il problema, utilizzare il codice seguente:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual(riid1, riid2) == TRUE)
  {
    // code ...
    return S_OK;
  }
  else
  {
    // code ...
    return E_FAIL;
  }
}

Ai fini del presente avviso, il tipo SCODE equivale a HRESULT.

Vedere anche

Altre risorse

SUCCEEDED

FAILED