1
Почему в одном случае вложенные макросы работают, а в другом нет?Вложенные макросы
Случай 1:
#define name(val) #val
#define name2(front, back) name(front ## back)
...
printf("%s\n", name2(foo, bar)); // foobar
Случай 2:
#define paste(front, back) front ## back
#define name(val) #val
#define name2(front, back) name(paste(front, back))
...
printf("%s\n", name2(foo, bar)); // paste(foo, bar)
Вы заглянули внутрь предварительно обработанной формы, например. как полученная 'gcc -C -E' в Linux, вашей исходной программы (к которой вы могли бы добавить« промежуточный »код типа' printf («% s \ n», name (goo)) '? –
Эта ссылка полезна для меня, когда вы изучаете http://gcc.gnu.org/onlinedocs/cpp/Macros.html#Macros – yuan