Compartilhar via


C6225

Aviso C6225: Conversão implícita entre tipos inteiros semanticamente diferentes: atribuindo 1 ou TRUE para o HRESULT. Considere usando o S_FALSE

Este aviso indica que uma HRESULT está sendo atribuído ou inicializado com um valor de um 1 explícita. Tipos booleanos indicam o sucesso 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 seguinte código:

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 a falha, E_FAIL, ou outra constante, deve ser usado.

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

Bem-sucedida

Falha na