LISTORY

[윈도우즈 시스템 프로그래밍] 1부 정리(2) 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] 1부 정리(2)

LiStoryTeller 2018. 8. 19. 16:47


뇌를 자극하는 윈도우즈 시스템 프로그래밍 유투브 강의 1부 정리이다.


저번 포스팅에 이어 1부 정리를 계속 하겠다.



2장. Windows에서의 유니코드


유니코드에 대해 말하기 전, 문자셋이라는 것이 무엇인지 알아야 한다.


문자셋은 문자의 집함으로, 문자를 어떻게 표현하느냐에 따라 세가지로 나뉜다.


1. SBCS(Single Byte Character Set)

- 문자를 표현하는데 1바이트 사용

- 아스키 코드


2. MBCS(Multi Byte Character Set)

- 한글은 2바이트, 영문은 1바이트 사용


3. WBCS(Wide Byte Character Set)

- 문자를 표현하는데 2바이트 사용

- 유니 코드


기존에 컴퓨터는 MBCS 기반의 Character Set이었다. 하지만 요즘 시스템은 메모리의 발전 등으로 인하여 MBCS로 효율적으로 프로그래밍 했다고 말하기엔 무리가 생겼다.


그래서 사용하게 된 것이 유니코드이다.


WBCS 기반의 프로그래밍


WBCS 기반으로 프로그래밍을 하기 위해서는 두가지를 기억해야 한다.


1. char를 대신하는 wchar_t 사용

2. "abc"를 대신하는 L"abc" 사용


유니코드를 사용하겠다는 것을 표시하기 위해선 앞에 L을 붙여주어야 한다.



⊙ MBCS와 WBCS의 동시지원


세상의 모든 시스템이 유니코드를 지원하면 좋겠지만, 그렇지 않다.


그러므로 우리는 프로그래밍 시에, 유니코드와 유니코드가 아닌 것을 동시에 지원할 수 있게 하는 편이 좋다.


이를 할  수 있도록 하기 위해 윈도우는 다양한 매크로를 지원한다.


이를 지원하기 위한 방법을 간단히 설명해 보겠다.


1. TCHAR 사용


TCHAR a 라고 선언이 되어있다면, 이는 유니코드가 지원이 될 경우 WCHAR가 되고 선언 되어 있지 않다면 CHAR가 된다.


즉, 두 모드를 동시에 지원하는 것이다.


2. _T(X) 사용


_T("TEST") 문자열을 선언하였을 때, 유니코드가 지원될 경우 L"TEST"가 되고, 그렇지 않을 경우 그냥 "TEST"가 된다.



이 뿐만이 아니라 유니코드냐 아니냐에 따라 달라지는 함수들이 있으므로, 둘다 지원하는 함수를 사용하는 것이 좋다.


Comments