기록은 기억을 이기고 시간보다 오래 남는다.

프로그래밍 언어/c++

다양한 자료형의 이해(LPSTR, LPTSTR, LPCSTR, LPWSTR, LPCTSTR, LPCWSTR)

준_준 2022. 3. 28. 23:08

게임 서버을 공부하면서 여러 코드를 분석하고 컴파일하면서 나타나는 에러는 자료형과 관련된 에러였다. 아마 해당 코드가 작성된 visual studio가 버전이 다르기 때문에 생기는 문제일 것이다. 따라서 LPSTR, LPTSTR, LPCSTR, LPWSTR, LPCTSTR, LPCWSTR과 같은 다양한 자료형이 어떤 의미를 가지고 있고 형 변환 예에 대해 기술하고자 한다.

 자료형의 스펠링은 다양한 단어의 약자이다. LP Long Pointer의 약자이다. 해당 약자는운영체제와 관련이 크다. 이는 16bit 윈도우의 유산이고 윈도우 3.1까지 모든 포인터는 16bit이였고 24bit 메모리를 long pointer를 통해 관리를 했다. Cconstant의 약자이며 const와 동일하게 변경이 변경이 불가하다는 의미이다. T tchar의 약자이다. T는 자동동으로 데이터형을 변환해 준다. Type + char 이라 볼 수 있다. 이는 비주얼 스튜디오에서 문자열 처리를 MBCSUNICODE를 둘 다 처리 할 수 있도록 한다. W wchar의 약자이다. 유니코드를 말한다. 반대의 개념은 A(ANSI:ASCII)이다. 이 데이터타입은 명백히 UTF-16으로 인코딩되는 문자열을 다루기 위해 사용된다 마지막 STRstring의 약자이다. 내부적으로는 char 배열이다. 마지막에는 종료 값(null)을 포함하고 있다. Char 보다 조금 더 편리하게 문자열 사용이 가능하다.

 

 

약자 LP C T W STR
의미 Long Pointer Constant Tchar Wchar string

 

 

따라서 위의 약자를 조합과 형 변환의 예는 사진들과 같다.

-LPSTR = Long pointer string의 약자이다. char*이다. 형 변환의 예는 다음과 같다.

 

-LPCSTR = Long pointer constant string의 약자이다. const char*이다.

 

-LPWSTR = Long pointer wide string이다. w_char*이다.

 

-LPCWSTR = Long pointer constant wide string이다. const w_char*이다.

 

-LPCTSTR = Long pointer constant t_string이다. const char*이다.

   

 

 

반응형