【发布时间】:2016-12-14 13:22:37
【问题描述】:
我正在寻找一种制作扩展为额外参数的宏的方法:
int constant1=2, constant2=3;
#define add_three_arguments(x,y,z) x+y+z
#define extra_arguments ,constant1,constant2
#define make_value(A) add_three_arguments(A extra_arguments)
int r = make_value(5);
【问题讨论】:
-
为什么你想要一个宏,而你肯定可以使用一个函数来做到这一点?
-
不直接相关,位从不定义像
#define add_three_arguments(x,y,z) x+y+z这样的宏,但总是将表达式放入(),如下所示:#define add_three_arguments(x,y,z) (x+y+z)。否则,如果您使用x = add_three_arguments(1,2,3) * 10,结果将不是您所期望的。 -
如果您能告诉我们您在这里尝试实现的更高级别的目标,那将非常有帮助。
-
这对我来说就像XY Problem。