如何使用宏?

use*_*ser -2 c macros function

为什么答案是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;
}
Run Code Online (Sandbox Code Playgroud)

jh3*_*314 10

如果你编译 -E flag(仅运行预处理器,则得到:

int main()
{
   int a;
   a=(3*2 +1)*(3*2 +1*3)+(3*2 +1*2);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)