是否可以将一个预处理器的输入用于C中的另一个预处理器?

时间:2016-10-14 21:34:29

标签: c macros c-preprocessor

我正在尝试做这样的事情......

#define INPUT (x = 3, y = 5)
#define MATH(add) ((add == 1) ? (INPUT.x + INPUT.y) : (INPUT.x - INPUT.y))

void main (void)
{
int add = MATH (1);
int subs = MATH (0);
}

基本上我想简化这个......

#define x 3
#define y 5
#define MATH(add) ((add == 1) ? (x + y) : (x - y))

void main (void)
{
int add = MATH (1);
int subs = MATH (0);
}

这可能在 C 某种程度上可能吗?

1 个答案:

答案 0 :(得分:2)

既然你想做如此糟糕的cpp药物,这里有一些值得思考的东西:

#include <stdio.h>

#define x 3
#define y 5
#define x1 +
#define x0 -
#define MATH(a) x x##a y

int main(void) {
    int add = MATH(1);
    int subs = MATH(0);

    printf("add=%d, sub=%d\n", add, subs);
    return 0;
}