Compartir a través de


C6225

Actualización: noviembre 2007

C6225

Advertencia C6225: Conversión implícita entre tipos enteros semánticamente diferentes: asignando 1 o TRUE a HRESULT. Considere utilizar en su lugar S_FALSE

Esta advertencia indica que se está asignando o inicializando un tipo HRESULT con el valor de 1 explícito. Los tipos booleanos indican el éxito mediante un valor distinto de cero, mientras que el éxito (S_OK) en HRESULT se indica mediante el valor 0. Esta advertencia se produce con frecuencia por la confusión accidental de los tipos booleanos y HRESULT. Para indicar el éxito, debe utilizarse la constante simbólica S_OK.

Ejemplo

En el código siguiente, la asignación de HRESULT genera esta advertencia:

#include <windows.h>

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

Para corregir esta advertencia, utilice el código siguiente:

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

Para esta advertencia, el tipo SCODE es equivalente a HRESULT.

Para indicar error, se debe utilizar E_FAIL u otra constante.

Vea también

Otros recursos

SUCCEEDED

FAILED