SHOW:
|
|
- or go back to the newest paste.
1 | #define PP_ARG_N( \ | |
2 | _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \ | |
3 | _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \ | |
4 | _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \ | |
5 | _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \ | |
6 | _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \ | |
7 | _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \ | |
8 | _61, _62, _63, N, ...) N | |
9 | ||
10 | #define PP_RSEQ_N() \ | |
11 | 63, 62, 61, 60, \ | |
12 | 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, \ | |
13 | 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, \ | |
14 | 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, \ | |
15 | 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, \ | |
16 | 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, \ | |
17 | 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 | |
18 | ||
19 | #define PP_NARG_(...) PP_ARG_N(__VA_ARGS__) | |
20 | ||
21 | #define PP_COMMASEQ_N() \ | |
22 | 1, 1, 1, 1, \ | |
23 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ | |
24 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ | |
25 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ | |
26 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ | |
27 | - | PP_NARG(1) |
27 | + | |
28 | 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 | |
29 | - | ----- |
29 | + | |
30 | - | $ gcc -E main.c |
30 | + | |
31 | ||
32 | - | # 1 "main.c" |
32 | + | |
33 | - | # 1 "<built-in>" 1 |
33 | + | |
34 | - | # 1 "<built-in>" 3 |
34 | + | |
35 | - | # 321 "<built-in>" 3 |
35 | + | |
36 | - | # 1 "<command line>" 1 |
36 | + | |
37 | - | # 1 "<built-in>" 2 |
37 | + | |
38 | - | # 1 "main.c" 2 |
38 | + | |
39 | - | # 27 "main.c" |
39 | + | |
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 |
40 | + | |
41 | - | PP_NARG(1) |
41 | + | |
42 | - | ^ |
42 | + | |
43 | - | main.c:16:11: note: expanded from macro 'PP_NARG' |
43 | + | |
44 | #define PP_NARG_HELPER3_00(N) 1 | |
45 | - | ^ |
45 | + | |
46 | - | main.c:21:37: note: expanded from macro 'PP_NARG_HELPER1' |
46 | + | |
47 | ||
48 | - | ^ |
48 | + | // ----=====================================================================---- |
49 | - | main.c:22:59: note: expanded from macro 'PP_NARG_HELPER2' |
49 | + | // Test |
50 | // ----=====================================================================---- | |
51 | - | ^ |
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())) |
52 | + | #include <iostream> |
53 | - | 1 error generated. |
53 | + | using namespace std; |
54 | ||
55 | int main() | |
56 | { | |
57 | cout << PP_NARG(1) << endl; | |
58 | } |