윈도우 타입 시스템 :: 2007/08/25 12:13
처음으로 C언어를 익히고 Windows 프로그래밍을 하는 사람들이 겪는 가장 큰 어려움은 복잡한 타입 시스템이다. 대부분의 사람들이 PVOID, LPCTSTR, TCHAR, LPTSTR등으로 전혀 듣지도 못했던 타입 명들 앞에서 당황한다.
|
글자 |
의미 |
|
T |
문자를 나타내는 타입에 주로 등장하는 글자다. T가 의미하는 바는 유니코드와 ANSI의 컴파일 환경에 따라 적절히 변경된다는 것을 나타낸다. 유니코드 빌드라면 wchar_t로 변환되고, ANSI 빌드라면 char로 변환됨을 나타낸다. |
|
L |
long을 나타낸다. 주로 포인터 타입에 많이 등장한다. 16비트 시절은 포인터가 near, far등으로 구분해서 사용했다. 그 시절 관습에 따라 붙여진 것이다. 32비트 환경에서는 그러한 포인터 사이에 구분이 없기 때문이 L이 붙은 것과 붙지 않은 것 모두 같은 의미를 가진다. |
|
C |
const를 나타낸다. C가 들어간 자료형은 값을 수정할 수 없는 const로 선언된 것이라 이해하면 된다. |
|
D |
double을 나타낸다. 크기가 두 배라는 의미다. |
|
U |
unsigned를 나타낸다. |
|
H |
핸들을 나타낸다. 대부분 이 타입은 void *로 변환된다. |
그럼 이제 자주 사용되는 타입을 살펴보자.
|
타입 명 |
설명 |
|
TCHAR |
char형을 표현하는 타입이다. T가 붙었기 때문에 유니코드에선 wchar_t로, ANSI에서는 char로 변환된다. |
|
PTSTR, LPSTR |
문자열에 대한 포인터를 나타낸다. 유니코드에선 wchar_t *로, ANSI에서는 char *로 변환된다. |
|
PCTSTR, LPCTSTR |
수정이 불가능한 문자열 포인터를 나타낸다. 유니코드에선 const wchar_t *로, ANSI에서는 const char *로 변환된다. |
|
PVOID |
void 포인터를 나타낸다. void *로 변환된다. |
|
PCVOID |
상수 void 포인터를 나타낸다. const void *로 변환된다. |
|
BOOL |
TRUE/FALSE를 나타내는데 사용됨을 의미한다. 실제로는 int로 변환된다. |
|
BYTE |
8비트 무부호 정수를 나타낸다. unsigned char로 변환된다. |
|
WORD |
16비트 무부호 정수를 나타낸다. unsigned short로 변환된다. |
|
DWORD |
32비트 무부호 정수를 나타낸다. unsigned long으로 변환된다. |
|
UINT |
unsigned int로 변환된다. |
|
USHORT |
unsigned short로 변환된다. |
|
ULONG |
unsigned long으로 변환된다. |
|
PWORD, LPWORD, PUSHORT, LPUSHORT |
unsigned short * 변환된다. |
|
HANDLE |
파일, 뮤텍스, 세마포어, 이벤트등의 핸들을 나타낸다. void *로 변환된다. |
|
HPEN |
GDI PEN 핸들이다. void *로 변환된다. |
|
HBITMAP |
GDI BITMAP 핸들이다. void *로 변환된다. |
보다 많은 타입에 대한 더욱 상세한 설명은 아래 페이지에 나와있다.
http://msdn2.microsoft.com/en-us/library/aa505945.aspx



















