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.
Warnung C6219: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird mit 1 oder TRUE verglichen.Stattdessen sollten Sie möglicherweise das SUCCEEDED- oder FAILED-Makro verwenden.
Diese Warnung gibt an, dass ein HRESULT mit einem expliziten Wert von 1 verglichen wird, der kein HRESULT ist.Dies kann zu falschen Ergebnissen führen, da der typische Erfolgswert von HRESULT (S_OK) 0 ist; bei einem Vergleich mit einem Boolean-Typ wird er implizit in false umgewandelt.
Beispiel
Der folgende Code generiert diese Warnung, weil CoGetMalloc ein HRESULT zurückgibt, das dann mit TRUE verglichen wird:
#include <windows.h>
void f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (hr == TRUE)
{
// success code ...
}
else
{
// failure code
}
}
Meistens wird die Warnung durch Code verursacht, der fälschlicherweise ein HRESULT mit einem Boolean-Typ vergleicht.Es empfiehlt sich, das SUCCEEDED-Makro oder das FAILED-Makro zum Testen des Werts eines HRESULT zu verwenden.So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#include <windows.h>
void f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// success code ...
}
else
{
// failure code
}
}
Bei dieser Warnung entspricht der SCODE-Typ HRESULT.