【发布时间】:2018-05-16 20:31:07
【问题描述】:
如何将宏参数与另一个整数变量一起传递给宏函数?
#define SUM(X, Y, Z) X + Y + Z
#define FOO 1, 2
void print(int a, int b)
{
printf("Sum: %d", a + b);
}
int main(void)
{
// Normal function works as expected
print(FOO);
// Macro function not working
int a = 3;
printf("\nMacro Sum: %d", SUM(FOO, a));
return 0;
}
我希望输出是:
Sum: 3
Macro Sum: 6
但是,我收到以下错误:
main.c:18:41: error: macro "SUM" requires 3 arguments, but only 2 given
printf("\nMacro Sum: %d", SUM(FOO, a));
【问题讨论】:
-
当您使用
SUM(FOO, a)扩展该行时,FOO直到参数确定后才会扩展。只有 2 个参数,但宏需要 3 个——因此是消息。FOO扩展为1, 2将在接下来发生。
标签: c function macros arguments parameter-passing