1 #include <stdio.h> 2 3 struct anonymous_nest { 4 struct { 5 struct { 6 int a; 7 int b; 8 }; // anonymous 9 struct { 10 int c; 11 int d; 12 } foo; 13 }; // anonymous 14 }; 15 16 struct anonymous_child { 17 struct { 18 struct { 19 int a; 20 int b; 21 } grandchild; 22 struct { 23 int c; 24 int d; 25 } foo; 26 }; // anonymous 27 }; 28 29 struct anonymous_grandchild { 30 struct { 31 struct { 32 int a; 33 int b; 34 }; // anonymous 35 struct { 36 int c; 37 int d; 38 } foo; 39 } child; 40 }; 41 42 int processor_nest (struct anonymous_nest *n) 43 { 44 return n->foo.d + n->b; // Set breakpoint 0 here. 45 } 46 47 int processor_child (struct anonymous_child *c) 48 { 49 return c->foo.d + c->grandchild.b; // Set breakpoint 1 here. 50 } 51 52 int processor_grandchild (struct anonymous_grandchild *g) 53 { 54 return g->child.foo.d + g->child.b; 55 } 56 57 58 59 typedef struct { 60 int dummy; 61 } type_y; 62 63 typedef struct { 64 type_y y; 65 } type_z; 66 67 68 69 int main() 70 { 71 struct anonymous_nest n = { 0, 2, 0, 4 }; 72 struct anonymous_child c = { 0, 2, 0, 4 }; 73 struct anonymous_grandchild g = { 0, 2, 0, 4 }; 74 type_z *pz = 0; 75 type_z z = {{2}}; 76 77 printf("%d\n", processor_nest(&n)); 78 printf("%d\n", processor_child(&c)); 79 printf("%d\n", processor_grandchild(&g)); // Set breakpoint 2 here. 80 81 return 0; 82 } 83