Compartilhar via


C6225

Aviso C6225: Conversão implícita entre diferentes semanticamente inteiro tipos: atribuindo 1 ou verdadeiro para HRESULT.Em vez disso, use S_FALSE

Este aviso indica que um HRESULT está sendo atribuído ou inicializado com um valor de um 1 explícita. Tipos booliano indicam êxito por um valor diferente de zero; ( sucessoS_OK) na HRESULT é indicado por um valor de 0. Esse aviso é freqüentemente causado por confusão acidental de booliano e de HRESULT tipos. Para indicar êxito, a constante simbólico S_OK deve ser usado.

Exemplo

O código a seguir, 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 esse aviso, o SCODE tipo é equivalente a HRESULT.

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

Consulte também

Outros recursos

BEM-SUCEDIDA

FALHA