マクロ関数に別の整数変数とともにマクロ引数を渡すにはどうすればよいですか? マクロ関数へのマクロ引数の受け渡し
#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への展開が起こります。 –