Partager via


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.