1 struct foo
2 {
3   int a, b, c, d;
4   double doubl;
5 } s1, s2;
6 
7 #ifndef ONLY2
8 
9 struct foo
structret(s1,i1,i2,s2)10 structret (s1, i1, i2, s2)
11      struct foo s1, s2;
12      int i1, i2;
13 {
14   if (i1 != i2)
15     {
16       if (i1 < i2)
17 	return s1;
18       else
19 	return s2;
20     }
21   s2.a = 11;
22   s2.b = 22;
23   s2.c = s1.c;
24   s2.d = s1.d;
25   return s2;
26 }
27 
28 #endif
29 
30 #ifndef ONLY1
31 
32 struct foo
mani(a,b)33 mani (a, b)
34 {
35   return structret (s1, a, b, s2);
36 }
37 
init()38 init ()
39 {
40   s1.a = 1;
41   s1.b = 2;
42   s1.c = 3;
43   s1.d = 4;
44   s1.doubl = 3.1415;
45   s2.a = -1;
46   s2.b = -2;
47   s2.c = -3;
48   s2.d = -4;
49   s2.doubl = 2.71818;
50 }
51 
main()52 main ()
53 {
54   struct foo s;
55 
56   init ();
57   s = mani (1, 1);
58   printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
59 
60   init ();
61   s = mani (2, 1);
62   printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
63 
64   init ();
65   s = mani (1, 2);
66   printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
67 }
68 
69 #endif
70