1#ifdef DEF_MACROS
2
3  #ifdef ONE
4    #ifdef FOO
5    #undef FOO
6    #endif
7    #define FOO "hello"
8  #else
9    #undef FOO
10  #endif
11
12
13  #ifdef TWO
14    #ifdef FOO
15    #undef FOO
16    #endif
17    #define FOO " "
18  #endif
19
20  #ifdef THREE
21    #ifdef FOO
22    #undef FOO
23    #endif
24    #define FOO "world"
25  #endif
26
27  #ifdef FOUR
28    #ifdef FOO
29    #undef FOO
30    #endif
31    #define FOO(a) foo = a
32  #endif
33#else
34
35int main (int argc, const char **argv)
36{
37  char *foo;
38
39  #define DEF_MACROS
40  #define ONE
41  #include "info-macros.c"
42  foo = FOO;
43
44  #define TWO
45  #include "info-macros.c"
46  foo = FOO;
47
48  #define THREE
49  #include "info-macros.c"
50  foo = FOO;
51
52  #undef THREE
53  #include "info-macros.c"
54  foo = FOO;
55
56  #undef TWO
57  #include "info-macros.c"
58  foo = FOO;
59
60  #undef ONE
61  #include "info-macros.c"
62  foo = (char *)0;
63
64  #define FOUR
65  #include "info-macros.c"
66  FOO ("the end.");
67
68  return 0;
69}
70#endif
71
72