#define Map(From, To, val) \
Map__##From__##To(val)
Map(TYPEA, TYPEB, 22);
В приведенном выше коде мне интересно, почему Map(TYPEA, TYPEB, 22);
расширяется до Map__From__TYPEB(22);
, а не Map__TYPEA__TYPEB(22);
Я использовал gcc -E для расширения.