Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
}
}