X1 __COUNTER__X2 __COUNTER__#if __COUNTER__X3 __COUNTER__#endif#define pass(x) x#define a x __COUNTER__ y#define a2 pass(__COUNTER__)#define f(c) c __COUNTER__#define apply(d) d d __COUNTER__ x2 f(d) y2 __COUNTER__#define _paste(a,b) a ## b#define paste(a,b) _paste(a,b)#define _paste3(a,b,c) a ## b ## c#define doublepaste(a,b) _paste3(a,b,b)#define str(x) #xX4 aX5 f(a)X6 f(b)X7 f(__COUNTER__)X8 apply(a)X9 apply(f(a))X10 apply(__COUNTER__)X11 apply(a2)X12 str(__COUNTER__)X13 paste(x,__COUNTER__)X14 _paste(x,__COUNTER__)X15 doublepaste(x,__COUNTER__)
X1 __COUNTER__
X2 __COUNTER__
#if __COUNTER__
X3 __COUNTER__
#endif
#define pass(x) x
#define a x __COUNTER__ y
#define a2 pass(__COUNTER__)
#define f(c) c __COUNTER__
#define apply(d) d d __COUNTER__ x2 f(d) y2 __COUNTER__
#define _paste(a,b) a ## b
#define paste(a,b) _paste(a,b)
#define _paste3(a,b,c) a ## b ## c
#define doublepaste(a,b) _paste3(a,b,b)
#define str(x) #x
X4 a
X5 f(a)
X6 f(b)
X7 f(__COUNTER__)
X8 apply(a)
X9 apply(f(a))
X10 apply(__COUNTER__)
X11 apply(a2)
X12 str(__COUNTER__)
X13 paste(x,__COUNTER__)
X14 _paste(x,__COUNTER__)
X15 doublepaste(x,__COUNTER__)