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 defined(FOO) || defined(FOOB)
21int foo1() { return 0; }
22#else
23#error FOO or FOOB not defined
24#endif
25
26#if defined(FOOB) || defined(FOO)
27int foo2() { return 0; }
28#else
29#error FOO or FOOB not defined
30#endif
31
32#if defined(FOO) && defined(FOOB)
33int foo3() { return 0; }
34#else
35#error FOO and FOOB not defined
36#endif
37
38#if defined(FOOB) && defined(FOO)
39int foo4() { return 0; }
40#else
41#error FOO and FOOB not defined
42#endif
43
44int main()
45{
46  foo1();
47  foo2();
48  foo3();
49  foo4();
50}
51