1 typedef struct 2 { 3 void *p; 4 } Ptr; 5 6 struct A 7 { 8 int i; 9 union 10 { 11 Ptr p; 12 char *q; 13 } u; 14 }; 15 16 extern Ptr get_stuff (void); 17 extern void use_stuff (char *); 18 foo(struct A p,char * q)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 bar(struct A * p,char * q)29void bar(struct A *p, char *q) 30 { 31 foo(*p, q); 32 } 33