boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs | README

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 }