title: What's the point of this series of C typedef/struct/union/enum definitions?
body: <p>Inside of this <a href="http://github.com/petermichaux/bootstrap-scheme/blob/v0.1/scheme.c#L26" rel="nofollow">first step</a> towards <a href="http://michaux.ca/articles/scheme-from-scratch-bootstrap-v0_1-integers" rel="nofollow">a bootstrapped scheme interpreter</a> I find the following set of typedef, struct, union, and enum definitions:</p>
  
  <pre><code>typedef enum {FIXNUM} object_type;
  
  typedef struct object {
      object_type type;
      union {
          struct {
              long value;
          } fixnum;
      } data;
  } object;
  </code></pre>
  
  <p>In particular, I'm not sure I understand the point of the struct inside the union (<code>struct { long value; } fixnum;</code>) -- a struct with only one field, to hold a single long? Very strange. </p>
  
  <p>But I'm not really sure I understand the larger point, too. I <em>think</em> what's going on with the enum definition is that he's setting up a number of possible type values for lexical entities, and that <code>object</code> is a way of holding these, but perhaps somebody with more practice in C than I have can offer a more detailed explanation. </p>
  
  <p>Thanks!</p>