Share via


C6214

경고 C6214: 의미 체계가 다른 정수 형식 간의 캐스팅입니다. HRESULT에서 부울로 캐스팅했습니다.

이 경고는 HRESULT가 부울 형식으로 캐스팅된다는 것을 나타냅니다. HRESULT의 성공 값(S_OK)은 0입니다. 하지만 0은 부울 형식에서는 실패를 나타냅니다. HRESULT를 부울 형식으로 캐스팅한 다음 테스트 식에 사용하면 잘못된 결과가 나옵니다. 경우에 따라 이 경고는 HRESULT가 부울 변수에 저장되는 경우에 발생합니다. 부울 변수를 사용하여 HRESULT의 성공 또는 실패를 테스트하는 모든 비교는 결과가 잘못될 수 있습니다.

예제

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

#include <windows.h>

BOOL f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  if ((BOOL)hr) // warning 6214
  {
    // success code ...
    return TRUE;
  }
  else
  {
    // failure code ...
    return FALSE;
  }
}

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

#include <windows.h>

BOOL f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;

  hr = CoGetMalloc(1, &pMalloc);
  if (SUCCEEDED(hr)) 
  {
    // success code ...
    return TRUE;
  }
  else
  {
    // failure code ...
    return FALSE;
  }
}

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

일반적으로 SUCCEEDED 또는 FAILED 매크로를 사용하여 HRESULT의 값을 테스트해야 합니다.

자세한 내용은 다음 항목 중 하나를 참조하십시오.

SUCCEEDED

FAILED