Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Important Il est possible que le présent document ne corresponde pas aux pratiques recommandées pour le développement actuel. Par ailleurs, il se peut que des liens de téléchargement et d'autres ressources ne soient plus valides. La version recommandée actuelle est disponible ici.

C6214

C6214

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

Cet avertissement indique qu'un HRESULT est casté à un type booléen. La valeur de succès (S_OK) d'un HRESULT égale 0. Toutefois, 0 indique l'échec pour un type booléen. Effectuer un cast d'un HRESULT en un type booléen, puis l'utiliser dans une expression de test produira un résultat incorrect. Parfois, cet avertissement se produit lorsqu'un HRESULT est stocké dans une variable booléenne. Toute comparaison utilisant la variable booléenne pour tester le succès ou l'échec de HRESULT peut produire des résultats incorrects.

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>

BOOL f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  if ((BOOL)hr) // warning 6214
  {
    // success code ...
    return TRUE;
  }
  else
  {
    // failure code ...
    return FALSE;
  }
}

Pour corriger cet avertissement, utilisez le code suivant :

#include <windows.h>

BOOL f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;

  hr = CoGetMalloc(1, &pMalloc);
  if (SUCCEEDED(hr)) 
  {
    // success code ...
    return TRUE;
  }
  else
  {
    // failure code ...
    return FALSE;
  }
}

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

Généralement, la macro SUCCEEDED ou FAILED doit être utilisée pour tester la valeur d'un HRESULT.

Voir aussi

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2015 Microsoft