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