게임 서버을 공부하면서 여러 코드를 분석하고 컴파일하면서 나타나는 에러는 자료형과 관련된 에러였다. 아마 해당 코드가 작성된 visual studio가 버전이 다르기 때문에 생기는 문제일 것이다. 따라서 LPSTR, LPTSTR, LPCSTR, LPWSTR, LPCTSTR, LPCWSTR과 같은 다양한 자료형이 어떤 의미를 가지고 있고 형 변환 예에 대해 기술하고자 한다.
자료형의 스펠링은 다양한 단어의 약자이다. LP는 Long Pointer의 약자이다. 해당 약자는운영체제와 관련이 크다. 이는 16bit 윈도우의 유산이고 윈도우 3.1까지 모든 포인터는 16bit이였고 24bit 메모리를 long pointer를 통해 관리를 했다. C는 constant의 약자이며 const와 동일하게 변경이 변경이 불가하다는 의미이다. T는 tchar의 약자이다. T는 자동동으로 데이터형을 변환해 준다. Type + char 이라 볼 수 있다. 이는 비주얼 스튜디오에서 문자열 처리를 MBCS나 UNICODE를 둘 다 처리 할 수 있도록 한다. W는 wchar의 약자이다. 유니코드를 말한다. 반대의 개념은 A(ANSI:ASCII)이다. 이 데이터타입은 명백히 UTF-16으로 인코딩되는 문자열을 다루기 위해 사용된다 마지막 STR은 string의 약자이다. 내부적으로는 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*이다.
'프로그래밍 언어 > c++' 카테고리의 다른 글
[c/c++] c언어로 행맨 (Hangman) 게임 만들기 (0) | 2022.04.13 |
---|---|
집의 평수를 제곱 미터로 바꾸는 프로그램(C++ espresso) (0) | 2022.03.28 |
C++로 상자의 부피 구하는 프로그램 (0) | 2022.03.25 |
윤성우 열혈 c++ 문제 04-2번 and 생성자 추가 버전 4-3 문제 (0) | 2022.01.25 |
윤성우 열현 C++ 프로그래밍 문제 03-2번 (0) | 2022.01.21 |