다음을 통해 공유


C6216

경고 C6216: 의미 체계가 다른 정수 계열 형식 간의 컴파일러 삽입 캐스팅입니다. 부울 형식에서 HRESULT로 캐스팅했습니다.

이 경고는 부울이 명시적으로 캐스팅되지 않고 HRESULT로 사용되고 있음을 나타냅니다. 부울 형식은 0이 아닌 값으로 성공을 나타내는 반면 HRESULT에서는 0 값으로 성공(S_OK)을 나타냅니다. 부울을 반환하는 함수의 일반적인 실패 값인 false는 HRESULT로 테스트할 경우 성공 상태를 나타냅니다. 이로 인해 잘못된 결과가 발생할 수 있습니다.

예제

다음 코드에서는 이 경고를 발생시킵니다.

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

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // code ...
  return IsEqual(riid1, riid2);  
}

이 경고를 해결하려면 다음 코드를 사용합니다.

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

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual(riid1, riid2) == TRUE)
  {
    // code ...
    return S_OK;
  }
  else
  {
    // code ...
    return E_FAIL;
  }
}

이 경고의 경우 SCODE 형식은 HRESULT와 동일합니다.

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