두개의 define 을 붙이는 방법이 있을까요..

s0me의 이미지

#define HOME_PATH "/home"
#define BABO_HOME_PATH ROOT_PATH + "/babo"

가운데 + 의 역활을 하는 무엇가가 있을까요.

BABO_HOME_PATH 를 출력하면 /home/babo 와 같은 값을 원합니다.

좋은 방법이 있을까요.

thisrule의 이미지

그냥 쓰시면 됩니다.

#define HOME_PATH "/home"
#define BABO_HOME_PATH    HOME_PATH  "/babo"
s0me의 이미지

아 그냥 되는군요 감사합니다.

espereto의 이미지

#define HOME_PATH "/home"
#define BABO_HOME_PATH HOME_PATH ## "/babo"

위와 같은 방법도 있습니다.

## 는 precompile할 때, 두 개의 토큰을 하나로 묶는 역할을 하죠.
이걸 응용해서, 함수명을...

#define function1 PREFIX ## function1

void function1(...);

void function1(...)
{
...
}

이렇게 해 두면, 컴파일할 때 -DPREFIX=aaa_ 로 주고 컴파일하면,
function1이
aaa_function1로 되고,

-DPREFIX=bbb_ 를 주고 컴파일하면,
bbb_function1
로 되지요.

k2hyun의 이미지

오호.. 오늘 새로운 것 하나 또 배워갑니다. ^^

더 이상 없다.