问题的背景:
void dash(int *n, char c)绘制用'+'分隔的字符c。
参数n是一个整数数组,例如{1、3、2}和'-'表示c应为“ +-+ --- +-+”,这很好用。为了使用破折号,我这样做了{int f={1, 3, 2}; dash(f, '-');},这使得构造可以复制和粘贴。
问题本身:
为了避免我想做的复制粘贴操作#define F(X, Y) {int f=X; dash(f, Y);},使用起来很不错F({1, 3, 2}, '-')。
不幸的是,编译器抱怨F获取了4个(数组的长度+ 1)参数,而不是2个参数。
那么,如何给{1, 3, 2}宏作为参数呢?
可变参数宏是C99的功能。
#define F(Y,...) dash((int[]){__VA_ARGS__},Y)
Run Code Online (Sandbox Code Playgroud)
那么如何将{1、3、2}作为参数提供给宏?
F('-',1,3,2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8678 次 |
| 最近记录: |