Freigeben über


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.