Share via


C6230

경고 C6230: 의미 체계가 다른 정수 형식 간의 암시적 캐스팅입니다. 부울 컨텍스트에서 HRESULT를 사용하고 있습니다.

이 경고는 부울 결과가 필요한 if 문과 같은 컨텍스트에 HRESULT만 사용하고 있음을 나타냅니다. 이 경우 잘못된 결과가 발생할 수 있습니다. 예를 들어, 부울로 테스트될 경우 HRESULT의 일반적인 성공 값(S_OK)은 false입니다.

예제

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

#include <windows.h>

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

대부분의 경우 SUCCEEDED 또는 FAILED 매크로를 사용하여 HRESULT의 값을 테스트해야 합니다. 이 경고를 해결하려면 다음 코드를 사용합니다.

#include <windows.h>

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

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