728x90
- 4강 : MBCS와 WBCS의 동시지원
- Section2: MBCS와 WBCS(유니코드) 동시지원
- 필요한이유 : 세상의 모든 시스템이 유니코드를 지원하면좋겠지만 여전히 유니코드의 장점에도 기존에 개발된 프로그램과의 호환성등등으로 인해 100퍼센트 유니코드로만 동작하도록 구현하면 안된다.
- 윈도우즈에서는 동시지원을 위한 매크로를 지원한다.
- #include <windows.h> 안에는
- Windows정의 자료형
- typedef char CHAR;
- typedef wchar_t WCHAR;
- #define CONST const
- typedef CHAR* LPSTR;
- typedef CONST CHAR* LPCSTR;
- typedef WCHAR* LPWSTR;
- typedef CONST WCHAR* LPCWSTR;
- MBCS와 WBCS동시지원 매크로
- UNICODE라는 전처리기를 사용해서 동시 지원이 가능하다.
- TCHAR 이 유니코드가 전처리기로 선언된경우 WCHAR / 선언안된경우 CHAR 이다.
- 과정
- 유니코드는 문자열 표현시 L"문자열" 의 형태로 표현하고 유니코드가 아닐 경우 "문자열" 로 표현한다.
- 해당 처리도 유니코드와 유니코드가 아닐경우 어떤환경에서도 코드가 작동하게 하기위해 아래 작업이 필요하다.
- _T ("go") 를 매크로로 해석하면 __T("go") 에서 유니코드가 정의된경우 L"go" 로 변경
- 선언 안된경우 "go" 이다.
- a##b의경우 a를 b앞에 붙이라는 말 즉 #Define __T(x) L##X 는 x앞에 L을 붙이라는말
- 매크로 진행과정
- 아래 예제의 #define UNICODE와 출력을 통해 해당 코드가 유니코드기반으로 작동됐음을 알수 있다.
- MBCs와 WBCS 동시 지원 함수
- 문자타입과 표현방식 뿐만 아니라 멀티바이트캐릭터셋과 와이드바이트캐릭터셋(유니코드)의 경우 사용하는 함수도 다르다. 그러므로 함수또한 #ifdef __unicode #else를 통해서 유니코드환경과 비유니코드상황 둘다 코드가 상관없이 돌도록 처리해주는것도 필요하다.
- 아래는 해당 처리를 위한 매크로이다.
728x90
'기타 공부 기록 > 뇌를자극하는윈도우즈시스템프로그래밍' 카테고리의 다른 글
6강 , Section2. 프로그램 구현 관점에서의 WIN32 vs WIN64/오류의 확인 (0) | 2022.04.18 |
---|---|
5강 WIN32 vs WIN64 (0) | 2022.04.10 |
3강 : Windows에서의 유니코드(UNICODE) (0) | 2022.03.22 |
2 강. 프로그램의 실행과정/하드웨어 구성의 재접근 (0) | 2022.03.07 |
- 1강 . 컴퓨터 구조에 대한 첫 번째 이야기 (0) | 2022.03.07 |