C 언어 펀더멘털

Posted 2009.06.08 09:23

문자열 상수를 정의할 때  L keyword를 스트링의 앞에 붙이면 한 문자를 wchar_t형(2byte)으로 메모리상에 잡게 된다.

sizeof("1234567890" ) = 11byte
sizeof(L"1234567890") = 22byte

그러나 L keyword는 선택적으로 붙여야 할 때가 많으므로 이를 편하게 사용하기 위해 _T 매크로를 사용한다.
_T 매크로는다음과 정의되어 있다.

#define _T(x)       __T(x)
#define __T(x)      L ## x


_T("1234567890") 라고 사용하면  L"1234567890" 로 되기를 기대하는 것이다.

하지만, 이상한 점이 있다. _T가 L ## x 로 바로 매크로로 정의하지 않고 _T는 __T로  __T는 다시 L ## x로 재정의 한다.

실제로 매크로 _T를 __T를 거치지 않고 _T를 L ## x로 바로 정의하여 사용하면 컴파일 에러가 발생한다.

왜 이런 현상이 일어나는 것일까? 

이러한 궁금증을 속 시원히 설명하는 C언어 책이 있던가?


C언어 펀더멘털은 이럴 때 필요한 책이다.

수 년간 C언어 표준만을 연구해 온 저자의 치열하고 정확한 설명을 들을 수 있다. 다소 딱딱한 주제이고, 책의 만만치 않은 무게가 약간 거부감을 주지만, 일단 펼치면 마치 소설속에 빠져 들듯이, 재미있는 C언어 표준의 세계로 들어가게 된다.

지식 노동자에게는 새로운 지식은 유희 그 자체이다. 

이런 책이 있다는 것은 이땅의 개발들에게 축복이다.

ps. 이 책은 C언어 입문자들에게는 적합하지 않습니다. 시작도 해보기 전에 좌절을 안겨줄수도 있습니다. ㅎㅎ 
저작자 표시 비영리 변경 금지
신고
Write your message and submit
« PREV : 1 : 2 : 3 : 4 : NEXT »