C6230
Aktualisiert: November 2007
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 der Regel wird das SUCCEEDED-Makro oder das FAILED-Makro verwendet, um den Wert eines HRESULT zu testen. 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.