1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
struct foo { int i; int j; }; int bar (struct foo *k, int k2, int f, int f2) { int *p, *q; int res; if (f) p = &k->i; else p = &k->j; res = *p; k->i = 1; if (f2) q = p; else q = &k2; return res + *q; } extern void abort (void); int main() { struct foo k; k.i = 0; k.j = 1; if (bar (&k, 1, 1, 1) != 1) abort (); return 0; }