【发布时间】:2015-09-26 10:12:29
【问题描述】:
是否可以这样在宏内部调用宏:
#include <stdio.h>
#define AA(a1, a2) a1, 3, 5, a2
#define BB(x, y1, y2, y3, y4) { printf("%d %d %d %d %d\n",x, y1, y2, y3, y4 ); }
int main ()
{
int n = 21, k= 11;
BB(31, AA(n,k));
}
此代码在编译时返回以下错误:
test_macro.c:在函数“main”中:
test_macro.c:9:18: erreur: 宏 « BB » 需要 5 个参数,mais seulement 2 ont été passés
test_macro.c:9:4: erreur: 'BB' undeclared (第一次在这个函数中使用)
test_macro.c:9:4:注意:每个未声明的标识符对于它出现的每个函数只报告一次
【问题讨论】:
-
你真的错过了结尾
}吗? -
当你尝试时会发生什么?
-
省略宏后的分号,或者 - 更好 - 如果使用 gcc,将整个宏体(非标准)括起来以使其成为表达式。
-
问题出在您的错误中。你已经用 5 个参数定义了 BB,当你调用它时只提供了 2 个。