title: Does the order of members in a struct matter?
body: <p>I have found a peculiar behaviour in C. Consider the below code:</p>
  
  <pre><code> struct s {
       int a;
   };      
  
   struct z {
       int a;
       struct s b[];
   };  
  
   int main(void) {
       return 0;
   }   
  </code></pre>
  
  <p>It compiles just fine. Then change the order of the members of struct <code>z</code> like so</p>
  
  <pre><code>struct z {
      struct s b[];
      int a; 
  };  
  </code></pre>
  
  <p>And all of a sudden we get the compilation error <code>field has incomplete type 'struct s []'</code>. </p>
  
  <p>Why is that?</p>