pp-counter.c 581 B

12345678910111213141516171819202122232425262728
  1. X1 __COUNTER__
  2. X2 __COUNTER__
  3. #if __COUNTER__
  4. X3 __COUNTER__
  5. #endif
  6. #define pass(x) x
  7. #define a x __COUNTER__ y
  8. #define a2 pass(__COUNTER__)
  9. #define f(c) c __COUNTER__
  10. #define apply(d) d d __COUNTER__ x2 f(d) y2 __COUNTER__
  11. #define _paste(a,b) a ## b
  12. #define paste(a,b) _paste(a,b)
  13. #define _paste3(a,b,c) a ## b ## c
  14. #define doublepaste(a,b) _paste3(a,b,b)
  15. #define str(x) #x
  16. X4 a
  17. X5 f(a)
  18. X6 f(b)
  19. X7 f(__COUNTER__)
  20. X8 apply(a)
  21. X9 apply(f(a))
  22. X10 apply(__COUNTER__)
  23. X11 apply(a2)
  24. X12 str(__COUNTER__)
  25. X13 paste(x,__COUNTER__)
  26. X14 _paste(x,__COUNTER__)
  27. X15 doublepaste(x,__COUNTER__)