본문 바로가기

Language & API/C

define 매크로 ##연산자

토큰 붙여넣기 연산자 (##)

int token10 = 1;

#define paster(t) printf_s( "token" #t " = %d", token##t )

paster(10);


결과 : token10 = 1


위와 같은 define이 되어있으면 paster 넣어야 할 값은 상수를 넣어야 한다.

만약 변수를 넣으면 어떻게 될까?


위 소스를 예를 들어 아래 소스를 재구성 해보자.

int test_int =10;

paster(test_int);

이러면 define 부분에 printf_s( "token" #10 " = %d", token##10 ) 이 되는게 아니다.

결과는 printf_s( "token" #test_int " = %d", token##test_int ) 가 되어 버린다.


이걸 해결하려고 여러번 시도 했지만 아직 까지 좋은 방법을 찾지 못했다.