C6230
Warnung C6230: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird in einem Boolean-Kontext verwendet.
Diese Warnung gibt an, dass in einem Kontext wie einer if -Anweisung ein leeres HRESULT verwendet wird, obwohl ein boolesches Ergebnis erwartet wurde. Dies verursacht wahrscheinlich falsche Ergebnisse. So ist z. B. der typische Erfolgswert für HRESULT (S_OK) false, wenn er als boolescher Wert getestet wird.
Beispiel
Der folgende Code generiert diese Warnung:
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (hr)
{
// code ...
}
else
{
// code ...
}
}
In den meisten Fällen sollte das SUCCEEDED-Makro oder FAILED-Makro zum Testen des Werts von HRESULT verwendet werden. So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// code ...
}
else
{
// code ...
}
}
Bei dieser Warnung entspricht der SCODE-Typ HRESULT.