Compartilhar via


C6215

aviso C6215: Conversão entre tipos inteiros semanticamente diferentes: um tipo booleano para o HRESULT

Esse aviso indica que um booliano está sendo convertido em HRESULT.Os tipos boolianos indica o êxito por um valor diferente de zero, enquanto oS_OKêxito () em HRESULT é indicado por um valor de 0.Converter um tipo booliano a HRESULT e depois usá-lo em uma expressão de teste gerenciem um resultado incorreto.

Esse aviso geralmente ocorre quando um booliano é usado como um argumento para SUCCEEDED ou a macro de FAILED , que converte explicitamente seus argumentos a HRESULT.

Exemplo

O código a seguir gera este aviso:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

Em geral, SUCCEEDED ou macros de FAILED só devem ser aplicados a HRESULT.

Para corrigir esse aviso, use o seguinte código:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE) 
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

Para obter mais informações, consulte Macro SUCEDIDO e Macro FAILED