C6226
Avertissement C6226 : cast implicite entre types d'entiers sémantiquement différents : assignation de -1 à HRESULT. Si possible, utilisez E_FAIL à la place.
Cet avertissement indique qu'un HRESULT est assigné ou initialisé avec une valeur d'un explicite -1. Cet avertissement est fréquemment généré par confusion accidentelle entre les types entier et HRESULT. Pour indiquer le succès, la constante symbolique S_OK doit être utilisée. Pour indiquer l'échec, les constantes symboliques qui commencent par E_constant doivent être utilisées.
Pour plus d'informations, consultez les macros SUCCEEDED et FAILED.
Exemple
Le code suivant génère cet avertissement :
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = -1;
// code ...
}
else
{
// code ...
}
}
Pour corriger cet avertissement, utilisez le code suivant :
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = E_FAIL;
// code ...
}
else
{
// code ...
}
}
Pour cet avertissement, le type SCODE équivaut à HRESULT.