| typedef struct | |
| { | |
| void *p; | |
| } Ptr; | |
| struct A | |
| { | |
| int i; | |
| union | |
| { | |
| Ptr p; | |
| char *q; | |
| } u; | |
| }; | |
| extern Ptr get_stuff (void); | |
| extern void use_stuff (char *); | |
| static void foo(struct A p, char *q) | |
| { | |
| if (p.i) | |
| p.u.p = get_stuff (); | |
| else | |
| p.u.q = q; | |
| use_stuff (p.u.q); | |
| } | |
| void bar(struct A *p, char *q) | |
| { | |
| foo(*p, q); | |
| } |