1 #define FOR_EACH_SCALAR(F) \
5 F(us, unsigned short) \
11 F(ull, unsigned long long) \
17 #define EXTERN(SUFFIX, TYPE) extern TYPE x##SUFFIX;
18 #define STATIC(SUFFIX, TYPE) static TYPE s##SUFFIX;
19 #define COMMON(SUFFIX, TYPE) TYPE c##SUFFIX;
21 #define GETADDR(SUFFIX, TYPE) \
22 TYPE *get##SUFFIX (int which) \
24 return (which == 0 ? &c##SUFFIX \
25 : which == 1 ? &s##SUFFIX \
29 #define COPY(SUFFIX, TYPE) c##SUFFIX = s##SUFFIX; s##SUFFIX = x##SUFFIX;
31 FOR_EACH_SCALAR (EXTERN
)
32 FOR_EACH_SCALAR (STATIC
)
33 FOR_EACH_SCALAR (COMMON
)
35 FOR_EACH_SCALAR (GETADDR
)
40 FOR_EACH_SCALAR (COPY
);
43 extern void foo (int);
54 foo (csi
+ ssi
+ xsi
);
65 extern void bar (void (*) (void));
70 void sub (void) { foo (x
); }