경고 C6216
의미상 서로 다른 정수 형식 간에 컴파일러 삽입 캐스트: HRESULT에 부울 형식
부울 형식은 명시적으로 캐스팅되지 않고 사용 HRESULT
중입니다.
설명
부울 형식은 0이 아닌 값으로 성공을 나타냅니다. 성공(S_OK
)의 HRESULT
값은 0으로 표시됩니다. 부울 false
값으로 HRESULT
사용되는 값 S_OK
은 실수인 경우가 많습니다.
코드 분석 이름: COMPILER_INSERTED_CAST_BOOL_TO_HRESULT
예시
다음 코드는 이 경고를 생성합니다.
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
HRESULT f( REFGUID riid1, REFGUID riid2 )
{
// Oops, f() should return S_OK when the values are equal but will
// return E_FAIL instead because IsEqual returns a c-style boolean values TRUE or FALSE
return IsEqual(riid1, riid2);
}
이 경고를 수정하려면 두 형식 간에 적절한 변환을 추가하거나 명시적 캐스트를 추가합니다.
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
HRESULT f( REFGUID riid1, REFGUID riid2 )
{
// converting because IsEqual returns a c-style TRUE or FALSE
return IsEqual(riid1, riid2) ? S_OK : E_FAIL;
}
이 경고의 SCODE
경우 형식은 .에 해당합니다 HRESULT
.
자세한 내용은 SUCCEEDED 매크로 및 FAILED 매크로를 참조하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기