C6226
Mise à jour : novembre 2007
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 que HRESULT est assigné ou initialisé avec la valeur d'un -1 explicite. Il est fréquemment dû à une confusion accidentelle des types Integer 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.
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.