Препроцессор C :макрос stringize и макрос идентификации

Я хочу знать причину вывода этого кода. Я не мог придумать ответ.

#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
void main()
{
   printf("%s %s",h(f(1,2)),g(f(1,2)));
}

PS :вывод 12 f(1,2). Я думал, что это 12 12или f(1,2) f(1,2).

7
задан Brian Tompsett - 汤莱恩 15 February 2016 в 21:45
поделиться