C6225
Warnung C6225: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird 1 oder TRUE zugewiesen. Verwenden Sie stattdessen S_FALSE.
Diese Warnung gibt an, dass ein HRESULT zugewiesen oder mit dem expliziten Wert 1 initialisiert 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. Diese Warnung wird häufig durch eine Verwechslung von booleschen und HRESULT-Typen verursacht. Um bei Erfolg einen Wert anzugeben, sollte die symbolische Konstante S_OK verwendet werden.
Beispiel
Im folgenden Code wird durch Zuweisung von HRESULT diese Warnung generiert:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
// code ...
hr = S_OK;
}
else
{
// code ...
hr = 1;
}
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
hr = S_OK;
// code ...
}
else
{
hr = S_FALSE;
// code ...
}
}
Bei dieser Warnung entspricht der SCODE-Typ HRESULT.
Um das Fehlschlagen anzugeben, sollte E_FAIL oder eine andere Konstante verwendet werden.
Weitere Informationen finden Sie in einem der folgenden Themen: