2015년 9월 6일 일요일

Windows programming 공부하면서..(2)

windows에 정의하고 있는 자료형

windows.h에 정의되어 있는 CHAR와 WCHAR는 아래와 같다.




 typedef : windows 스타일의 새로운 이름을 정의할 때 쓰는 키워드

windows.h에 정의되어 있는 문자열의 주소값을 저장하는 자료형은 아래와 같다.

LTSTR
- char * 와 같이 1바이트를 가리키는 포인터

LPCSTR
- const char* 와 같음

LPTSTR : UNICODE (wide character) types
- 16 bit UNICODE character (WCHAR)를 가리키는 포인터
- 유니코드를 지원하기 때문에 2바이트를 가리킨다.

LPCTSTR
- const WCHAR* 와 같음


 LPWSTR와 LPCWSTR에 의미를 이해하기 위한 예제













매크로 UNICODE와 문자열 배열 선언


TCHAR arr[10]; -> WCHAR arr[10]; -> wchar_t arr[10];
매크로 UNICODE가 정의되면(2byte)

TCHAR arr[10]; -> CHAR arr[10]; -> char arr[10]
매크로 UNICODE가 정의되지 않으면(1byte)

char = 1byte , wchar_t = 2byte

실습을 하는데 생각했던것과 다르게 메크로가 재대로 적용이 안될 경우가 있다. 이런 경우는 닷넷 컴파일 설정을 수정하면 실습이 가능하다.(visual studio 2013 기준)

 닷넷 컴파일러 설정 : 프로젝트 -> 속성 (alt+p를 두 번 눌러도 됨)












'PreProcessor Definitions'을 edit하면 아래와 같은 그림을 볼 수 있다.



















여기서 보이는 'Inherit from parent or project defaults'라는 탭이 설정되고 있고 'Inherited values'에 _UNICODE와 UNICODE가 정의되어 있는것을 볼 수 있다. 이는 개발자의 편의를 위해 프로젝트 생성시 기본적으로 정의되는 메크로 이다.

이 설정 법을 수정하기 불편 하면 '#undef' 지시자를 사용하면 된다.



#undef 는 #define으로 정의 되어 있는 내용을 취소(비정의)하는 전처리기 이다.

MBCS와 WBCS(유니코드)를 동시에 지원하기 위한 함수

tchar.h에 보기 좋게 선언되어 있으니 참조하여 메크로를 작성하면, 쉽게 메크로 작성이 가능하다.




tchar.h에 선언된 메크로 예제



댓글 없음:

댓글 쓰기