다음을 통해 공유


C6226

경고 C6226: 의미 체계가 다른 정수 형식 간의 암시적 캐스팅입니다. HRESULT에 -1을 할당하고 있습니다.E_FAIL을 대신 사용하십시오.

이 경고는 HRESULT가 명시적 값인 -1로 할당되고 있거나 초기화되고 있음을 나타냅니다.이 경고는 정수와 HRESULT 형식을 실수로 혼동하여 발생하는 경우가 많습니다.성공을 나타내려면 기호화된 상수 S_OK를 사용해야 합니다.실패를 나타내려면 E_constant로 시작하는 기호화된 상수를 사용해야 합니다.

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

예제

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

#include <windows.h>

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

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

#include <windows.h>

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

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