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 HRESULT se va a asignar o inicializar con el valor explícito de 1.Los tipos booleanos indican una operación correcta mediante un valor distinto de cero; la operación correcta (S_OK) en HRESULT se indica mediante un valor de 0.Esta advertencia se genera con frecuencia a causa de una confusión accidental de los tipos booleanos y HRESULT.Para indicar una operación correcta, 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.
Para obtener más información, vea uno de los temas siguientes: