SYeonni 2021. 9. 11. 14:12

 

 

 

HRESULT 반환형 중 하나이다.
이는 32비트의 signed형 정수이다.

COM 규정에 의한 것은 아니지만 COM Interface에 소속된 대부분의 함수들은 HRESULT의 반환값을 가진다. 
이렇게 대부분 COM Interface에 소속된 함수들이 반환형으로 HRESULT를 사용함으로 클라이언트에게 일관성있는 함수의 정보를 전달할 수 있게 된다. 

HRESULT의 원래 목적은 공시적으로 OS/2 운영 체제의 여러 하위 시스템에 오류 코드간의 충돌을 방지하기 위해 내부공개와 MS 모두 사용하기 위해 오류 코드의 범위를 배치하는 것이었다. 

HRESULT내에는 에러코드의 본형과 출저에 대한 다양한 비트정보를 가지고 있다 (보통 COM 프로그래밍)

사용방법은 bool형의 true/false와 똑같이 SUCCEEDED/FAILED를 사용한다. 
차이점은 리턴값을 받지 않아도 되는것이다. 

HRESULT CRecoverEff::Ready_GameObject()
{
	if (FAILED(CTexture_Manager::Get_Instance()->Insert_Texture(CTexture_Manager::SINGLE_TEX, L"../Texture/Stage/UI/Life/AddLife.png", L"AddLife")))
		return E_FAIL;

	return S_OK;
}


위와 같이 사진 출력을 위해 Texture_Manager에 삽입 실패 시 메시지를 출력하기 위한 것인데 디버깅에 편리하다. 
(HRESULT 함수를 사용하는 이유는 디버깅이 용이하기 때문)
주의할점 : bool형은 true/fasle 가 1/0이지만 HRESULT 의 SUCCEEDED/FAILE은  0/1의 값을 가지고 있으므로 사용 시 헷갈리면 안된다. 


 -HRESULT 자주쓰는 상태 정보 요약
1. S_OK: 때때로 Boolean TRUE값으로 S_FALSE와 함께 사용되며 함수가 성공하였음을 의미한다. 
2. NOERROR: S_OK와 동일한 의미
3. S_FALSE : S_OK의 반대로 Boolean FALSE값으로 함수가 실패 했음을 의미

728x90