MFC

LP, T, C, STR 등에 대하여

Dongjun_ 2019. 1. 22. 10:33

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 가 필요해졌다.

 
 
 

 

반응형

'MFC' 카테고리의 다른 글

char, wchar, tchar 에 대해서  (0) 2019.01.22
[MFC] TCHAR에 관하여  (0) 2019.01.22