Compartilhar via


C6225

Aviso C6225: conversão implícita entre tipos inteiros semanticamente diferentes: atribuindo 1 ou verdadeiro para o HRESULT.Considere o uso de S_FALSE em vez disso

Este aviso indica que uma HRESULT está sendo atribuído ou inicializado com um valor de um 1 explícita.Tipos booleanos indicam êxito por um valor diferente de zero; sucesso (S_OK) em HRESULT é indicado por um valor de 0.Esse aviso é frequentemente provocado por confusão acidental de booleano e HRESULT tipos.Para indicar êxito, a constante simbólico S_OK deve ser usado.

Exemplo

No código a seguir, a atribuição de HRESULT gera este aviso:

#include <windows.h>

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

Para corrigir esse aviso, use o código a seguir:

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

Para este aviso, o SCODE tipo é equivalente a HRESULT.

Para indicar falha, E_FAIL, ou outra constante, deve ser usado.

Para obter mais informações, consulte um dos seguintes tópicos:

Bem-sucedida

Falha na