Partager via


C6216

Mise à jour : novembre 2007

C6216

Avertissement C6216 : Cast inséré par le compilateur entre types intégraux sémantiquement différents : type Boolean vers HRESULT

Cet avertissement indique qu'un type Boolean est utilisé comme HRESULT sans cast explicite. Les types Boolean indiquent le succès par une valeur non nulle, tandis que le succès (S_OK) dans HRESULT est indiqué par la valeur 0. La valeur d'échec classique pour les fonctions qui retournent une valeur Boolean false est un état de succès lorsqu'elle est testée comme HRESULT. Cette situation risque de générer des résultats incorrects.

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // code ...
  return IsEqual(riid1, riid2);  
}

Pour corriger cet avertissement, utilisez le code suivant :

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual(riid1, riid2) == TRUE)
  {
    // code ...
    return S_OK;
  }
  else
  {
    // code ...
    return E_FAIL;
  }
}

Pour cet avertissement, le type SCODE équivaut à HRESULT.

Voir aussi

Autres ressources

SUCCEEDED

FAILED