C6226
Warnung C6226: Implizite Umwandlung zwischen semantisch unterschiedlichen Integer-Typen: HRESULT wird -1 zugewiesen. Verwenden Sie stattdessen E_FAIL.
Diese Warnung gibt an, dass ein HRESULT zugewiesen wird oder mit dem Wert von explizit -1 initialisiert wird. Diese Warnung wird häufig durch eine Verwechslung von ganzzahligen 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.
Weitere Informationen finden Sie unter den Makros SUCCEEDED und FAILED.
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.