LPSTR, LPCSTR, LPTSTR, LPCTSTR, LPWSTR, LPCWSTR
[출처] LPSTR, LPCSTR, LPTSTR, LPCTSTR, LPWSTR, LPCWSTR |작성자 헐쿠
LP: long pointer (.Net에선 64bit, VC++에선 32bit)
STR: string 자료형 (NULL값을 가진 char* 배열)
T: unicode
W: wide(2byte) char
C: constant
LPSTR = long pointer + string = char*
LPCSTR = long pointer + constant + string = const char*
LPCTSTR = long pointer + constant + t_char + string = const char* 혹은 const w_char*
LPTSTR = long pointer + t_char + string = char* 혹은 w_char*
LPWSTR = long pointer + wide + string = w_char*
LPCWSTR = long pointer + constant + wide + string = const w_char*
windows 환경에서 유니코드를 표현하기 위해 TCHAR, t_char를 쓰는데
컴파일러 운영체제에서 멀티바이트 환경이면 char형으로,
unicode 환경이면 w_char, wide char 형으로 type casting 한다.
LPWSTR에 W는 멀티바이트, unicode 두 환경에서 모두 unicode 문자열을 쓴다
하지만 LPCTSTR에 T는 환경설정에 따라서 선택해서 쓸 수 있다.
그러므로 언어에 좀 더 자유롭게 개발하려면 T를 사용하는 것이 좋을 것이다.
흔히 CString을 char*로 캐스팅할 때 (LPSTR)(LPCTSTR)string을 쓴다.
(LPCTSTR)은 연산자 오버로딩(operator overloading)으로 const char*를 반환한다.
그리고 const char*를 char*에 대입할 수 없기 때문에
(LPSTR) 강제 캐스팅으로 const를 날린다.
'scrap > C/C++' 카테고리의 다른 글
프로세스 이름으로 검색 & 종료 (1) | 2012.06.10 |
---|---|
[EnumWindows()] (0) | 2011.09.26 |
현재 실행중인 프로세스를 종료하는 C언어, C++ (0) | 2011.09.26 |
FindWindow, FindWindowEx, WindowFromPoint (0) | 2011.09.26 |
윈도우 핸들 가져오기 (0) | 2011.09.26 |