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++통

 


 

 

'MFC' 카테고리의 다른 글

[MFC] 응답없음 처리  (0) 2020.06.25
[MFC] ProgressBar  (0) 2020.06.25
[MFC] 문자열(MULTI BYTE/UNICODE) / CString  (0) 2020.06.24
[MFC] Const char* 이란  (0) 2020.06.24
[MFC] Edit Control  (0) 2020.06.24

+ Recent posts