Partilhar via


C6226

Aviso C6226: conversão implícita entre tipos inteiros semanticamente diferentes: atribuindo -1 para o HRESULT.Considere o uso E_FAIL.

Este aviso indica que uma HRESULT está sendo atribuído ou inicializado com um valor explícito um-de 1.Esse aviso é frequentemente provocado por confusão acidental de inteiro e HRESULT tipos.Para indicar êxito, a constante simbólico S_OK deve ser usado.Para indicar a falha, as constantes simbólicas, começando com o E_constant devem ser usadas.

Para obter mais informações, consulte o teve êxito e FAILED macros.

Exemplo

O código a seguir gera este aviso:

#include <windows.h>

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

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

#include <windows.h>

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

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