C6215

Mise à jour : novembre 2007

C6215

avertissement C6215 : cast entre types d'entiers sémantiquement différents : type Boolean vers HRESULT

Cet avertissement indique que le cast d'un type Boolean est effectué vers HRESULT. Les types Boolean indiquent le succès par une valeur non nulle, alors que le succès (S_OK) dans HRESULT est indiqué par la valeur 0. Le cast d'un type Boolean vers HRESULT et l'utilisation dans une expression de test génèrent un résultat incorrect.

Cet avertissement se produit fréquemment lorsqu'un type Boolean est utilisé comme argument dans une macro SUCCEEDED ou FAILED, qui effectue un cast explicite de leurs arguments vers HRESULT.

Exemple

Le code suivant génère cet avertissement :

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

En général, la macro SUCCEEDED ou FAILED doit être appliquée uniquement à HRESULT.

Pour corriger cet avertissement, utilisez le code suivant :

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE) 
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

Voir aussi

Autres ressources

SUCCEEDED

FAILED