Share via


C6225

경고 C6225: 의미 체계가 다른 정수 형식 간의 암시적 캐스팅입니다. HRESULT에 1 또는 TRUE를 할당하고 있습니다. S_FALSE를 대신 사용하십시오.

이 경고는 HRESULT가 명시적 값인 1로 할당되고 있거나 초기화되고 있음을 나타냅니다. 부울 형식은 0이 아닌 값으로 성공을 나타내는 반면 HRESULT에서는 0 값으로 성공(S_OK)을 나타냅니다. 이 경고는 부울 형식과 HRESULT 형식을 실수로 혼동하여 발생하는 경우가 많습니다. 성공을 나타내려면 기호화된 상수 S_OK를 사용해야 합니다.

예제

다음 코드에서 HRESULT를 할당하면 이 경고가 생성됩니다.

#include <windows.h>

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
  {
    // code ...
    hr = S_OK;  
  }
  else
  {
    // code ...
    hr = 1;
  }
}

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

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
  {
    hr = S_OK;
    // code ...
  }
  else
  {
    hr = S_FALSE;
    // code ...
  }
}

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

실패를 나타내려면 E_FAIL이나 다른 상수를 사용해야 합니다.

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

SUCCEEDED

FAILED