C6225C6225

avertissement C6225 : cast implicite entre types d’entiers sémantiquement différents : assignation de 1 ou TRUE à HRESULT.warning C6225: Implicit cast between semantically different integer types: assigning 1 or TRUE to HRESULT. Utilisez S_FALSE à la placeConsider using S_FALSE instead

Cet avertissement indique qu’un HRESULT est assigné ou initialisé avec une valeur d’un 1 explicite.This warning indicates that an HRESULT is being assigned or initialized with a value of an explicit 1. Les types Boolean indiquent le succès par une valeur différente de zéro ; réussite (S_OK) dans HRESULT est indiqué par la valeur 0.Boolean types indicate success by a non-zero value; success (S_OK) in HRESULT is indicated by a value of 0. Cet avertissement est souvent dû à une confusion accidentelle de valeurs booléennes et HRESULT types.This warning is frequently caused by accidental confusion of Boolean and HRESULT types. Pour indiquer une réussite, la constante symbolique S_OK doit être utilisé.To indicate success, the symbolic constant S_OK should be used.

ExempleExample

Dans le code suivant, l’attribution de HRESULT génère cet avertissement :In the following code, assignment of HRESULT generates this warning:

#include <windows.h>

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;

  if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
  {
    // code ...
    hr = S_OK;
  }
  else
  {
    // code ...
    hr = 1;
  }
}

Pour corriger cet avertissement, utilisez le code suivant :To correct this warning, use the following code:

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;

  if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
  {
    hr = S_OK;
    // code ...
  }
  else
  {
    hr = S_FALSE;
    // code ...
  }
}

Pour cet avertissement, la SCODE type équivaut à HRESULT.For this warning, the SCODE type is equivalent to HRESULT.

Pour indiquer l’échec, E_FAIL, ou une autre constante, doit être utilisé.To indicate failure, E_FAIL, or another constant, should be used.

Pour plus d’informations, consultez une des rubriques suivantes :For more information see one of the following topics:

A RÉUSSISUCCEEDED

ÉCHEC DE LAFAILED

Pour tirer parti de méthodologie d’allocation de mémoire moderne C++, utilisez les mécanismes fournis par la bibliothèque STL (C++ Standard Template Library).To leverage modern C++ memory allocation methodology, use the mechanisms that are provided by the C++ Standard Template Library (STL). Ceux-ci incluent shared_ptr, unique_ptr, et vecteur.These include shared_ptr, unique_ptr, and vector. Pour plus d’informations, consultez pointeurs intelligents et bibliothèque Standard C++.For more information, see Smart Pointers and C++ Standard Library.