在C中将几个参数作为宏传递

时间:2012-12-13 19:18:03

标签: c

抱歉英语不好。

假设代码:

#define FOO(x,y) FOO ## x
#define BAR A, B

FOO(A, B)已成功扩展为FOOA。但是当我写FOO(BAR)时,C预处理器(gcc -E)会给出错误

error: macro "FOO" requires 2 arguments, but only 1 given

如果我想将FOO扩展为FOO(BAR),我应该如何更改FOOA宏?

1 个答案:

答案 0 :(得分:3)

#define FOO(X, Y) FOO ## X
#define BAR A, B

#define APPLY(F, X) F(X)

APPLY(FOO, BAR)

#define FOO(X) FOO_(X)
#define FOO_(X, Y) FOO ## X
#define BAR A, B

FOO(BAR)