Recent Posts
Recent Comments
Link
11-17 00:00
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

Polymorphic 자료형 본문

DEV&OPS/C & C++

Polymorphic 자료형

ALEPH.GEM 2021. 9. 3. 17:57

마이크로소프트 윈도우즈 시스템은 16비트(9X) 부터 32비트(XP)를 거쳐 64(vista~)비트 기반으로 설계되어 있습니다.

변수를 저장하는 자료형의 크기가 변하는 관계로 포인터를 다룰때 문제가 생깁니다.

define 매크로를 이용하여 빌드시 실행 환경에 따라 빌드를 비교적 쉽게 바꿀 수 있지만, 소스가 매크로로 가득하게되면 가독성이 매우 떨어지게 됩니다.

이에 대한 대안이 Polymorphic 자료형을 이용하는 것입니다. 

아래 예제에 사용된 것 처럼 Unsigned Integer 자료형을 PTR 키워드를 붙이게 되면 실행환경에 따라 그 자료형의 크기가 결정됩니다. 

#include <stdio.h>
#include <tchar.h>
#include <windows.h>

//64비트 환경 32비트 환경에 따라서 다르게 선언되는 자료형 UINT_PTR
UINT_PTR CalDistance(UINT a, UINT b)
{
	//실행 환경에 관계없이 각 UINT형 변수가 저장된 주소의 거리를 계산
	return a-b;
}

int _tmain(void)
{
	INT val1 = 10;
	INT val2 = 20;

	_tprintf(_T("Position %d, %d \n"), (UINT)&val1, (UINT)&val2);
	_tprintf(_T("distnace: %d \n"), CalDistance((UINT)&val1, (UINT)&val2));

	return 0;
}

 

 

 

 

728x90

'DEV&OPS > C & C++' 카테고리의 다른 글

kernel object and object handle  (0) 2021.09.10
windows 시스템 함수 호출 오류시 오류코드 획득  (0) 2021.09.07
MFC String 자료형  (0) 2021.09.01
C++ 문자열 처리(string class)  (0) 2021.09.01