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.

Voir aussi

Autres ressources

SUCCEEDED

FAILED