그냥 사는 이야기

define 매크로에서 # 사용하기 본문

Development/개발언어

define 매크로에서 # 사용하기

없다캐라 2008. 12. 4. 11:25
반응형

define macro magic

define 전처리를 사용할 때 #에 대해서는 특별한 기능이 있다. 그리고 ##도 또 다른 기능이 있다. 이런 것들을 잘 활용하면 정말 마법같은 코드생성 같은 메타 처리를 할 수 있다.

여기서는 # 하나만 사용하는 경우의 예를 살펴 보면

#define DELETE                           (0x00010000L)

struct perm_name
{
    DWORD perm;
    const char * name;
};

#define PERM_NAME(perm) {perm, #perm}

perm_name process_perm_names[] =
{
    { DELETE, #DELETE },     // 이건 안됨. 전처리기에서 #이 의미를 가지는 것 같음.
    PERM_NAME(DELETE),       // 잘 됨
};

예제를 돌려보면 어떤 기능을 가지고 있는지 금방 알 수 있을 것 같다. define된 것을 풀어서 { DELETE, #DELETE }이 안되더라.

Comments