1typedef struct
2{
3  void *p;
4} Ptr;
5
6struct A
7{
8  int i;
9  union
10  {
11    Ptr p;
12    char *q;
13  } u;
14};
15
16extern Ptr get_stuff (void);
17extern void use_stuff (char *);
18
19static void foo(struct A p, char *q)
20{
21  if (p.i)
22    p.u.p = get_stuff ();
23  else
24    p.u.q = q;
25
26  use_stuff (p.u.q);
27}
28
29void bar(struct A *p, char *q)
30{
31  foo(*p, q);
32}
33