3 #define A(a,b...) g(a,##b,##b)
8 #define E(x,y,z) x ## y ## z
12 #define STRINGIFY2(x) #x
13 #define STRINGIFY(x) STRINGIFY2(x)
17 printf("%s\n", STRINGIFY()); // should produce the empty string
18 printf("%s\n", STRINGIFY(C
)); // should produce the empty string
19 printf("%s\n", STRINGIFY(
23 )); // should produce g(a ) g(a,b,b)g(a,b,c,b,c)
24 printf("%s\n", STRINGIFY(B())); // should produce the empty string
25 printf("%s\n", STRINGIFY(B(C
))); // should produce the empty string
26 printf("%s\n", STRINGIFY(D(,))); // should produce the empty string
27 printf("%s\n", STRINGIFY(E(1,,))); // should produce 1
28 printf("%s\n", STRINGIFY(E(,2,))); // should produce 2
29 printf("%s\n", STRINGIFY(E(,,3))); // should produce 3
30 printf("%s\n", STRINGIFY(E(1,2,3))); // should produce 123
32 // should produce g(a ) g(a )g(a )g(a )g(a )
33 printf("%s\n", STRINGIFY(A(a
,F()) A(a
,C
) A(a
,G
) A(a
,) A(a
)));