Passion/Programming

C/C++ 에서 define에서 사용가능한 ##, # 에 대한 기능

sunshout 2009. 7. 13. 11:32
C 프로그래밍에서 보면 가끔씩 이상한 문법들이 있다.

그 중에서 #, ## 같은 define 들이 있는데 이를 잘 사용하면 프로그램이 짧아지게 된다.


예제 (Language : c)
#define paster(n) printf("Token " #n " = %d\n", token ## n)

int main()
{
    int token9 = 9;
    paster(9);
    return 0;
}

#은 Stringizing Operator 로 메크로 인자를 문자로 만들어 준다.

따라서 paster(9)가 불리면 n은 9가 되고

위의 예에서 #n 은 메크로에서 받은 n을 문자로 만들어 준다.
따라서 printf("Token " "9" " = %d\n", token ## n) 으로 변경되었다.

##은 앞뒤 를 연결시켜주는 Token Pasting Operator 이다.
따라서 prinff("Token " "9" " = %d\n", token9) 가 된다.