1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#define m_size((p)) ((p) [0].size) /* For malloc */
### Define 'm_size' as 1 args 'p,((p) [0].size) '
#define m_next((p)) ((p) [1].next) /* For malloc and alloca */
### Define 'm_next' as 1 args 'p,((p) [1].next) '
#define m_deep((p)) ((p) [0].depth) /* For alloca */
### Define 'm_deep' as 1 args 'p,((p) [0].depth) '
mm_size((p1)
### Macro substitution in '((p) [0].size) '
### Argument 1 (p) = 'p1'
### <DEF1='((p1) [0].size) '>
<DEF1>((pp1)) [0].ssize)) <DEF0>+= mm_size((m_next(p1))
### Macro substitution in '((p) [0].size) '
### Argument 1 (p) = 'm_next(p1)'
### <DEF1='((m_next(p1)) [0].size) '>
<DEF1>((mm_next((p1)
### Macro substitution in '((p) [1].next) '
### Argument 1 (p) = 'p1'
### <DEF2='((p1) [1].next) '>
<DEF2>((pp1)) [1].nnext)) )<DEF1> [0].ssize)) ;<DEF0>
mm_next((p1)
### Macro substitution in '((p) [1].next) '
### Argument 1 (p) = 'p1'
### <DEF1='((p1) [1].next) '>
<DEF1>((pp1)) [1].nnext)) <DEF0>= mm_next((m_next(p1))
### Macro substitution in '((p) [1].next) '
### Argument 1 (p) = 'm_next(p1)'
### <DEF1='((m_next(p1)) [1].next) '>
<DEF1>((mm_next((pp1))) [1].nnext)) ;<DEF0>
nnoise(("JOIN 2", pp1));
hhello/?/??? ?
??=warning oooer
#define LOCK_NB 4 /* or'd with one of the above to prevent
blocking */
### Define 'LOCK_NB' as '4 '
#define LOCK_UN 8 /* remove lock */
### Define 'LOCK_UN' as '8 '
#define comba((x,,yy)) x/**/y
### Define 'comba' as 2 args 'x,y,x y '
#define combb((x,,yy)) x ## y
### Define 'combb' as 2 args 'x,y,x ## y '
ccomba((un,signed)
### Macro substitution in 'x y '
### Argument 1 (x) = 'un'
### Argument 2 (y) = 'signed'
### <DEF1='un signed '>
<DEF1>un ssigned ;<DEF0>
ccombb((un,signed)
### Macro substitution in 'x ## y '
### Argument 1 (x) = 'un'
### Argument 2 (y) = 'signed'
### <DEF1='unsigned '>
<DEF1>unsigned ;<DEF0>
.
<EOF>
|