다음을 통해 공유


경고 C6215

의미상 서로 다른 정수 형식 간에 캐스팅: HRESULT에 부울 형식

이 경고는 부울이 .로 HRESULT캐스팅되고 있음을 나타냅니다. 부울 형식은 0이 아닌 값으로 성공을 나타내는 반면 성공(S_OK) HRESULT 은 값 0으로 표시됩니다. 부울 형식 HRESULT 을 테스트 식에 캐스팅한 다음 테스트 식에 사용하면 잘못된 결과가 생성됩니다.

설명

이 경고는 부울을 인수로 사용하거나 FAILED 매크로로 사용하여 인수를 SUCCEEDED 명시적으로 캐스팅할 때 자주 발생합니다HRESULT.

코드 분석 이름: CAST_BOOL_TO_HRESULT

예시

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

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

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

일반적으로 매크로 또는 SUCCEEDEDFAILED 매크로는 .에만 적용 HRESULT해야 합니다.

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

#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
  }
}

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