如何使用宏?

时间:2015-10-09 19:52:22

标签: c function macros

为什么答案是a = 71?为什么在运行此程序结束时,答案将根据:m1(3,2,1)= 7 .... a = m2(7,21,14)= 7 * 21 + 14

#define m1(a,b,c) a*b+c
#define m2(x) m1( (x), (x*3), (x*2))

int main()
{
   int a;
   a=m2(m1(3,2,1));
   return 0;
}

1 个答案:

答案 0 :(得分:10)

如果使用-E标志进行编译(仅运行预处理器,则得到:

int main()
{
   int a;
   a=(3*2 +1)*(3*2 +1*3)+(3*2 +1*2);
   return 0;
}