抱歉英语不好。
假设代码:
#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
宏?
答案 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)