039-struct-nested.c (737B)
1 // tests/cc-parse/39-struct-nested.c — nested struct field access via 2 // real C. Tests both `s.inner.x` and `p->inner.x` chains. Padding 3 // ensures the inner struct is at a non-zero offset, so each step's 4 // offset must be summed correctly. 5 // 6 // outer.lead = 0; outer.inner.x=2; outer.inner.y=3; 7 // return p->inner.x + p->inner.y*10 + s.inner.x*100 + s.inner.y*1000; 8 // = 2 + 30 + 200 + 3000 = 3232. We compare to 3232 -> exit 1. 9 10 int main() { 11 struct Inner { int x; int y; }; 12 struct Outer { int lead; struct Inner inner; }; 13 struct Outer s; 14 struct Outer *p = &s; 15 s.lead = 99; 16 s.inner.x = 2; 17 s.inner.y = 3; 18 return (p->inner.x + p->inner.y * 10 + s.inner.x * 100 + s.inner.y * 1000) 19 == 3232; 20 }