C언어, 전처리기 연산자 # ##
글쓴이: gurumong / 작성시간: 금, 2009/02/06 - 5:43오전
전처리기 연산자에 대해서 공부하고 있습니다
#include stdio.h #define HASH # ## # #define XSTRING(x) STRING(x) #define STRING(x) # x int main(void) { printf("%s\n", XSTRING(aaa HASH bbb)); // 출력 : aaa ## bbb return 0; }
출력이 aaa # ## # bbb 출력되어야하는것이 아닌가요?
왜 이렇게 나오는지 도무지 모르겠어요
HASH에 의해서 치환되는 ##는 전처리기 연산자의 기능을 할수없는걸로 알고있는데
#연산자도 마찬가지가 아닌가요?
그래서 출력때 이 모두가 그대로 출력되어야하는것 같은데요
aaa # ## # bbb
볼드체 부분은 어디가고 ##만 출력되는지 모르겠네요
Forums:
"##"을
"##"을 표현해야겠는데,
##은 token concatenation이라고 연산자입니다.
따라서 그냥 ##이라고 define하면 에러가 뜹니다.
이 연산자의 기능은 앞 뒤의 토큰을 하나의 토큰으로 이어주는 것으로
# ## #이라고 define하면, ##이 만들어지는 것입죠우 = ω=)r
감사합니다 ^^
이제 보니까 ## 연산자로 양쪽에 있는 #를 합쳐주는것이네요;;
##연산자의 기능을 이미 알고있었는데
왜 그걸 생각못했는지 T.T
뭔가 제가 좀 생각하는 깊이가 좀 부족한거 같네요 T.T
댓글 달기