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와 동일합니다.