Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define PP_COMMASEQ_N() \
- 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
- #define PP_COMMA() ,
- #define PP_HASCOMMA(...) \
- PP_NARG_(__VA_ARGS__, PP_COMMASEQ_N())
- #define PP_NARG(...) \
- PP_NARG_HELPER1( \
- PP_HASCOMMA(__VA_ARGS__), \
- PP_HASCOMMA(PP_COMMA __VA_ARGS__ ()), \
- PP_NARG_(__VA_ARGS__, PP_RSEQ_N()))
- #define PP_NARG_HELPER1(a, b, N) PP_NARG_HELPER2(a, b, N)
- #define PP_NARG_HELPER2(a, b, N) PP_NARG_HELPER3_ ## a ## b(N)
- #define PP_NARG_HELPER3_01(N) 0
- #define PP_NARG_HELPER3_00(N) 1
- #define PP_NARG_HELPER3_11(N) N
- PP_NARG(1)
- -----
- $ gcc -E main.c
- # 1 "main.c"
- # 1 "<built-in>" 1
- # 1 "<built-in>" 3
- # 321 "<built-in>" 3
- # 1 "<command line>" 1
- # 1 "<built-in>" 2
- # 1 "main.c" 2
- # 27 "main.c"
- 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
- PP_NARG(1)
- ^
- main.c:16:11: note: expanded from macro 'PP_NARG'
- PP_NARG_HELPER1( \
- ^
- main.c:21:37: note: expanded from macro 'PP_NARG_HELPER1'
- #define PP_NARG_HELPER1(a, b, N) PP_NARG_HELPER2(a, b, N)
- ^
- main.c:22:59: note: expanded from macro 'PP_NARG_HELPER2'
- #define PP_NARG_HELPER2(a, b, N) PP_NARG_HELPER3_ ## a ## b(N)
- ^
- ) 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()))
- 1 error generated.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement