可能重复:
为什么我没有在以下c程序中获得预期的输出?
我对宏的评估顺序有疑问.对于以下代码,我无法理解输出:
#include <stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a) 
int main()
{
    printf("%s\n",h(f(1,2)));
    printf("%s\n",g(f(1,2)));
    return 0;
}
产量
12
f(1,2)
为什么f不会在第二个printf之前首先扩展?