반응형

[MFC] LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 의 의미

반응형


MFC로 프로그램을 개발하다보면 LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 와 같은 자료형을 자주 마주하게 될 것인데, 이 자료형들을 읽는 데는 일정한 규칙이 있습니다.


LP : long pointer (16bit 윈도우의 유산, windows3.1까지는 포인터는 모두 16bit 였고 24bit 메모리를 long pointer라는 것을 통해 관리)

C : constant

STR : string자료가 될것이라는 뜻으로 내부적으로는 char형 배열에 null값 종료를 의미


이 규칙을 적용하면


LPSTR -> long pointer string = char *

LPCSTR -> long pointer constant string = const char*


가 됩니다.


그리고,


LPCWSTR -> long pointer constant wide string = const w_char *

LPWSTR -> long pointer wide string = w_char *


가 되는 데 여기서 w_char는 unicode를 나타냅니다.


또한 T가 들어가 있는 자료형을 보실 수 있는 데 이것은,


LPCTSTR -> long pointer constant t_string = const t_char *


로 읽고 이 t_char는 컴파일러가 precompile option을 보고, 환경에 맞게 동작하는 코드를 작성할 수 있도록 하는 변수 모양의 매크로입니다. 


이 자료형이 나타난 배경은 마이크로소프트가 unicode기반으로 개발을 진행하게 되면서 C, C++의 포인터 연산 시 발생하는 호환성 문제를 해결하기 위해만들어진 것이죠. 즉 운영체제가 multi-byte환경이면 char로 unicode환경이면 w_char로 type casting이 됩니다.


따라서 현재 windows 8.1이상을 쓰는 현재로써는 



LPCTSTR -> long pointer constant t_string = const t_char * = const char*가 됩니다.



반응형

이 글을 공유하기

댓글

Designed by JB FACTORY