1/* Copyright 2004, 2008 Bob Proulx <bob@proulx.com>
2Distributed under the two-clause BSD licence;
3see the COPYING file for details. */
4
5#include <stdio.h>
6#include <stdlib.h>
7
8#if 0
9/* This code is commented out. "#if 0 then" */
10#else
11/* This code is passed through. "#if 0 else" */
12#endif
13
14#if 1
15/* This code is passed through. "#if 1 then" */
16#else
17/* This code is passed through. "#if 1 else" */
18#endif
19
20#if FOOB == 42
21int foo1() { return 0; }
22#else
23#error FOOB not 42
24#endif
25
26#if FOOB != 42
27#error FOO is 2
28#else
29int foo2() { return 0; }
30#endif
31
32#if FOOB == 42 || FOO == 1
33intx foo3() { return 0; }
34#else
35#error FOO not 1 or BAR not 1
36#endif
37
38#if FOOB != 42 && FOO != 1
39#error FOOB not 42 and FOO not 1
40#else
41int foo4() { return 0; }
42#endif
43
44#if FOOB == 42 || FOO != 1
45int foo5() { return 0; }
46#else
47#error FOOB is 42 or FOO is not 1
48#endif
49
50#if FOO != 1 || FOOB != 42
51#error FOO is 1 or FOOB is 42
52#else
53int foo6() { return 0; }
54#endif
55
56int main()
57{
58  foo1();
59  foo2();
60  foo3();
61  foo4();
62  foo5();
63  foo6();
64}
65