LPSTR = long pointer string = char * LPCSTR = long pointer constant string = const char *
LPCTSTR = long pointer constant t_string = const tchar *
LPWSTR = long pointer wide string = w_char * LPCWSTR = long pointer constant wide string = const w_char *
|
C/C++은 string을 compiler차원에서 지원하지 않음.
Windows에서는 이런 string처리를 위해서 char* 형을 그대로 쓰기보다는 LPCSTR 등의 표현
LP (long pointer) + STR (string) : 윈도 시절 16bit 과거 windows3.1에서 까지는 모두 16bit였고,
24bit 메모리를 long pointer라는 것으로 extended memory라는 이름으로 관리
LPCSTR (long pointer constant string = const char *)
LP(Long Pointer)는. Net에서는 64bit pointer를, VC++6.0과 그 이전 버전에서는 32bit pointer를 나타냄
C contant는 함수의 내부에서 인자 값을 변경하지 말라는 뜻.
STR은 말 그대로 string자료가 될 것이라는 뜻으로 내부적으로는 char형 배열에 null값 종료를 의미를 의함.
LPCTSTR = long pointer constant t_string = const tchar *
char는 1Byte이고 wide char는 2Byte 포인터 연산을 많이 하는 c, c++코드는 호환성에 치명적인 문제 발생
그래서 컴파일러가 precompile option을 보고. 환경에 맞게 동작하는 코드를 작성할 수 있는 새로운 변수 모양의 Macro를 선언 --> TCHAR, t_char
t_char의 유용성 type casting
운영체제가 multi-byte환경이면, char형으로,
unicode환경이면, w_char, wide char형으로
https://wantairpod.tistory.com/7
LPWSTR = long pointer wide string = w_char *
LPCWSTR = long pointer constant wide string = const w_char *
W는 wide char를 나타냅니다. 즉 unicode
(LPSTR)(LPCTSTR) 형 변환 (char *)(const char *)와 같은 말
출처 : Tong – lcyblue님의 C++통