Freigeben über


C6216

Warnung C6216: Vom Compiler eingefügte Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: Boolean in HRESULT

Diese Warnung gibt an, dass ein boolescher Typ ohne explizite Umwandlung als HRESULT verwendet wird.Bei booleschen Typen wird Erfolg durch einen Wert ungleich 0 (null) angegeben. Erfolg (S_OK) in HRESULT wird durch den Wert 0 (null) angezeigt.Der typische Fehlerwert für Funktionen, die ein boolesches false zurückgeben, ist ein Erfolgsstatus, wenn es als HRESULT getestet wird.Dies kann zu falschen Ergebnissen führen.

Beispiel

Der folgende Code generiert diese Warnung:

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

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

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

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

Bei dieser Warnung entspricht der SCODE-Typ HRESULT.

Weitere Informationen finden Sie unter SUCCEEDED-Makro und FAILED-Makro.