如何將宏參數和另一個整型變量一起傳遞給宏函數? 將宏參數傳遞給宏函數
#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'的情況。 –