다음을 통해 공유


경고 C6216

의미상 서로 다른 정수 형식 간에 컴파일러 삽입 캐스트: HRESULT에 부울 형식

부울 형식은 명시적으로 캐스팅되지 않고 사용 HRESULT 중입니다.

설명

부울 형식은 0이 아닌 값으로 성공을 나타냅니다. 성공(S_OK)의 HRESULT 값은 0으로 표시됩니다. 부울 false 값으로 HRESULT 사용되는 값 S_OK은 실수인 경우가 많습니다.

코드 분석 이름: COMPILER_INSERTED_CAST_BOOL_TO_HRESULT

예시

다음 코드는 이 경고를 생성합니다.

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

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // Oops, f() should return S_OK when the values are equal but will
  // return E_FAIL instead because IsEqual returns a c-style boolean values TRUE or FALSE
  return IsEqual(riid1, riid2);
}

이 경고를 수정하려면 두 형식 간에 적절한 변환을 추가하거나 명시적 캐스트를 추가합니다.

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

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // converting because IsEqual returns a c-style TRUE or FALSE
  return IsEqual(riid1, riid2) ? S_OK : E_FAIL;
}

이 경고의 SCODE 경우 형식은 .에 해당합니다 HRESULT.

자세한 내용은 SUCCEEDED 매크로FAILED 매크로를 참조하세요.