Partager via


C6230

Mise à jour : novembre 2007

C6230

Avertissement C6230 : Cast implicite entre types d'entiers sémantiquement différents : utilisation de HRESULT dans un contexte Boolean

Cet avertissement indique qu'un HRESULT nu est utilisé dans un contexte, par exemple l'instruction if , dans lequel un résultat Boolean est attendu. Cette situation risque de générer des résultats incorrects. Par exemple, la valeur de succès classique pour HRESULT (S_OK) est False lorsqu'elle est testée comme un type Boolean.

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>

VOID f( )
{
  LPMALLOC pMalloc;
  HRESULT hr = CoGetMalloc(1, &pMalloc);
  
  if (hr)
  {
    
    // code ...
  }
  else
  {
    // code ...
  }
}

Dans la plupart des situations, la macro SUCCEEDED ou FAILED doit être utilisée pour tester la valeur de HRESULT. Pour corriger cet avertissement, utilisez le code suivant :

#include <windows.h>

VOID f( )
{
  LPMALLOC pMalloc;
  HRESULT hr = CoGetMalloc(1, &pMalloc);
  
  if (SUCCEEDED(hr))
  {
    
    // code ...
  }
  else
  {
    // code ...
  }
}

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

Voir aussi

Autres ressources

SUCCEEDED

FAILED