LPSTR, LPCSTR, LPTSTR, LPCTSTR, LPWSTR, LPCWSTR
등 너무 많다.
-- 서론 --
C, C++ 은 String 자료 구조형 자체를 지원하지 않는다고 한다.
(compiler 차원에서)
String을 어떻게 사용할지 고민한 결과 :
배열의 끝에 " 또는 '0' 또는 NULL 값을 넣어 표현하기로 했다.
Windows 에서 string 처리를 위해 char* 보다는 LPCSTR 등의 표현으로 대처할 것을 권장.
-- 본론 --
LP, C, STR 등 반복적으로 활용되는 코드를 알아보자.
LP : long pointer
C : constant
W : wide
STR : string
TSTR : t_string
-LP
.Net -> 64bit pointer
VC++6.0 이전 -> 32bit pointer
과거 -> 16bit pointer
( 24bit 메모리관리를 LP를 통해 extended memory(연속 확장 메모리) 라는 이름으로 관리 했다고 한다. )
(뭔소리여...)
-C
함수 내부에서 인자값을 변경하지 말라는 뜻
-W
wide char 를 의미 (2Byte) -> unicode.
-STR
string 형태로 쓸거라는 뜻
내부적으로 char형 배열 + null 값 종료.
-TSTR
t형 string 이라는 뜻.
- 최종 요약
CHAR = char
char* = string (char 배열 = string | 단, 배열의 끝에 '0' 혹은 NULL이 포함 될 것)
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*
- 주석
기존의 표준형 최소 자료형은 1byte(8bit) character 로 아스키 문자를 입력했으나,
unicode 의 경우 2byte로 인해 wide character 가 필요해졌다.