Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
C6225
Warnung C6225: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird 1 oder TRUE zugewiesen. Verwenden Sie stattdessen S_FALSE.
Diese Warnung weist darauf hin, dass einem HRESULT der Wert einer expliziten 1 zugewiesen oder es damit initialisiert wird. Boolesche Typen geben bei Erfolg einen Wert ungleich 0 (null) zurück, HRESULT-Typen geben bei Erfolg (S_OK) 0 (null) zurück. 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.