C6225
avertissement C6225 : Cast implicite entre types d'entiers sémantiquement différents : assignation de 1 ou TRUE à HRESULT.Si possible, utilisez S_FALSE à la place.
Cet avertissement indique qu'un HRESULT est assigné ou initialisé avec une valeur d'un explicite 1.Les types Boolean indiquent une opération réussie par une valeur différente de zéro ; un résultat réussi (S_OK) dans HRESULT est indiqué par une valeur égale à 0.Cet avertissement est fréquemment généré par confusion accidentelle entre les types Boolean et HRESULT.Pour indiquer le succès, la constante symbolique S_OK doit être utilisée.
Exemple
Dans le code suivant, l'assignation de HRESULT génère cet avertissement :
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
// code ...
hr = S_OK;
}
else
{
// code ...
hr = 1;
}
}
Pour corriger cet avertissement, utilisez le code suivant :
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
hr = S_OK;
// code ...
}
else
{
hr = S_FALSE;
// code ...
}
}
Pour cet avertissement, le type SCODE équivaut à HRESULT.
Pour indiquer l'échec, E_FAIL, ou une autre constante, doit être utilisée.
Pour plus d'informations, consultez l'une des rubriques suivantes :