Condividi tramite


C6215

Aggiornamento: novembre 2007

C6215

avviso C6215: cast tra tipi integer semanticamente diversi: da un tipo Boolean a HRESULT

Questo avviso indica che è stato eseguito il cast di un tipo Boolean a HRESULT. I tipi Boolean indicano l'esito positivo in base a un valore diverso da zero, mentre l'esito positivo (S_OK) in HRESULT è indicato da un valore 0. Il cast di un tipo a Boolean a HRESULT e il relativo utilizzo in un'espressione di test produrranno un risultato non corretto.

L'avviso è spesso determinato dall'utilizzo di un Boolean come argomento per la macro SUCCEEDED o FAILED, che esplicitamente eseguono il cast dei relativi argomenti a un HRESULT.

Esempio

Il codice seguente genera questo avviso:

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

In genere le macro SUCCEEDED o FAILED dovrebbero essere applicate solo a HRESULT.

Per risolvere il problema, utilizzare il codice seguente:

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE) 
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

Vedere anche

Altre risorse

SUCCEEDED

FAILED