Udostępnij za pośrednictwem


C6215

Ostrzeżenie C6215: oddanych między całkowitą semantycznie różnych typów: HRESULT wpisz wartość logiczną

To ostrzeżenie wskazuje, że wartość logiczną jest są rzutowane na HRESULT.Typu Boolean wskazania sukcesu przez wartość różną od zera, dlatego sukces (S_OK) w HRESULT jest wskazany przez wartość 0.Rzutowanie wartość logiczną wpisz do HRESULT i następnie przy użyciu wyrażenia test da niepoprawny wynik.

To ostrzeżenie często występuje wówczas, gdy wartość logiczną jest używana jako argument do SUCCEEDED lub FAILED makro, które jawnie rzuca swoje argumenty na HRESULT.

Przykład

Poniższy kod generuje ostrzeżenie to:

#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 ...
  }
}

Ogólnie SUCCEEDED lub FAILED makra powinien być stosowany tylko do HRESULT.

Aby poprawić to ostrzeżenie, należy użyć następującego kodu:

#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
  }
}

Aby uzyskać więcej informacji, zobacz Makro pomyślnie i nie powiodło się makro