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

  • 本文关键字:参数 几个 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(BAR)扩展到FOOA,我应该如何更改FOO宏?

#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)

最新更新