Advertisement
Guest User

Untitled

a guest
Jun 19th, 2015
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. #define PP_COMMASEQ_N() \
  2. 1, 1, 1, 1, \
  3. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
  4. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
  5. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
  6. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
  7. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
  8. 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
  9.  
  10. #define PP_COMMA() ,
  11.  
  12. #define PP_HASCOMMA(...) \
  13. PP_NARG_(__VA_ARGS__, PP_COMMASEQ_N())
  14.  
  15. #define PP_NARG(...) \
  16. PP_NARG_HELPER1( \
  17. PP_HASCOMMA(__VA_ARGS__), \
  18. PP_HASCOMMA(PP_COMMA __VA_ARGS__ ()), \
  19. PP_NARG_(__VA_ARGS__, PP_RSEQ_N()))
  20.  
  21. #define PP_NARG_HELPER1(a, b, N) PP_NARG_HELPER2(a, b, N)
  22. #define PP_NARG_HELPER2(a, b, N) PP_NARG_HELPER3_ ## a ## b(N)
  23. #define PP_NARG_HELPER3_01(N) 0
  24. #define PP_NARG_HELPER3_00(N) 1
  25. #define PP_NARG_HELPER3_11(N) N
  26.  
  27. PP_NARG(1)
  28.  
  29. -----
  30. $ gcc -E main.c
  31.  
  32. # 1 "main.c"
  33. # 1 "<built-in>" 1
  34. # 1 "<built-in>" 3
  35. # 321 "<built-in>" 3
  36. # 1 "<command line>" 1
  37. # 1 "<built-in>" 2
  38. # 1 "main.c" 2
  39. # 27 "main.c"
  40. PP_NARG_HELPER3_PP_NARG_(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0main.c:27:1: error: pasting formed ')PP_NARG_', an invalid preprocessing token
  41. PP_NARG(1)
  42. ^
  43. main.c:16:11: note: expanded from macro 'PP_NARG'
  44. PP_NARG_HELPER1( \
  45. ^
  46. main.c:21:37: note: expanded from macro 'PP_NARG_HELPER1'
  47. #define PP_NARG_HELPER1(a, b, N) PP_NARG_HELPER2(a, b, N)
  48. ^
  49. main.c:22:59: note: expanded from macro 'PP_NARG_HELPER2'
  50. #define PP_NARG_HELPER2(a, b, N) PP_NARG_HELPER3_ ## a ## b(N)
  51. ^
  52. ) PP_NARG_(PP_COMMA 1 (), 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0)(PP_NARG_(1, PP_RSEQ_N()))
  53. 1 error generated.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement