C6216
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. Boolesche Typen geben bei Erfolg einen Wert ungleich 0 (null) zurück, wohingegen HRESULT
-Typen bei Erfolg (S_OK
) den Wert 0 (null) zurückgeben. Der typische Fehlerwert bei Funktionen, die den booleschen Wert false zurückgeben, besteht in einem Erfolgsstatus bei der Auswertung als HRESULT
. Dies kann zu unerwünschten 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
.