C6230
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 kann zu unerwünschten Ergebnissen führen. 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
.