Freigeben über


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.

Siehe auch

Referenz

SUCCEEDED-Makro
FAILED-Makro
HRESULT