Freigeben über


C6226

C6226

Warnung C6226: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird -1 zugewiesen. Verwenden Sie stattdessen E_FAIL.

Diese Warnung gibt an, dass einem HRESULT der Wert einer expliziten -1 zugewiesen bzw. es damit initialisiert wird. Diese Warnung wird häufig durch eine Verwechslung von Integer-Typen und HRESULT-Typen verursacht. Um bei Erfolg einen Wert anzugeben, sollte die symbolische Konstante S_OK verwendet werden. Um das Fehlschlagen anzugeben, sollten symbolische Konstanten, die mit E_constant beginnen, verwendet werden.

Beispiel

Der folgende Code generiert diese Warnung:

#include <windows.h>

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  if (FAILED(CoGetMalloc(1, &pMalloc)))
  {
    hr = -1;
    // code ...
  }
  else
  {
    // code ...
  }
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#include <windows.h>

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  if (FAILED(CoGetMalloc(1, &pMalloc)))
  {
    hr = E_FAIL;
    // code ...
  }
  else
  {
    // code ...
  }
}

Bei dieser Warnung entspricht der SCODE-Typ HRESULT.

Siehe auch

Referenz

SUCCEEDED-Makro
FAILED-Makro
HRESULT