출처 : 「윈도우즈 MFC 프로그래밍 - 원리...」본문 中 ### - 71페이지



매로크의 # ##

#define macro_define(str)   (#str)

가령 매크로를 위와 같이 정의하고, char *p = macro_define(string); 이라고 코드를 구현한다면 p는
"string"이라는 문자열을가리키게 된다, 즉 매크로정의의 인자를 문자열화 한다.

다음의 매크로 정의에 사용되는 ##은 매크로 인자를 연결하여 새로운 토큰을 구성한다.

#define macro_define(t1,t2)   (t1##t2)

위와 같이 매크로를 정의하고 int macro_define(na,na2); 라고 코드를 기술하면 int na1na2;로 구현한 것과 같다.
즉, ## 는 전처리 단계에서 두 개의 매크로 인자를 연결하여 새로운 토큰을 생성한다. 이렇게 매크로 정의에서
사용되는 두개의 #과 ##은 MFC가 자신이 사용하는 여러 매크로( 메세지 매크로, CRuntimeClass 매크로)를
구현하기 위해 내부적으로 자주 사용 한다.

AND