title: When is it not safe to turn off the __STRICT_ANSI__ flag?
body: <p>I am creating an application which uses the Apple GLKit headers. In this library, they turn off unions if __STRICT_ANSI__ is defined. I know how to undefined this via compiler flag, but I hate to do this without knowing why they had this in there, and under what circumstances this matters?</p>
  
  <p>Code From Apple's source:</p>
  
  <pre><code>#if defined(__STRICT_ANSI__)
  struct _GLKVector4
  {
      float v[4];
  } __attribute__((aligned(16)));
  typedef struct _GLKVector4 GLKVector4;  
  #else
  union _GLKVector4
  {
      struct { float x, y, z, w; };
      struct { float r, g, b, a; };
      struct { float s, t, p, q; };
      float v[4];
  } __attribute__((aligned(16)));
  typedef union _GLKVector4 GLKVector4;
  #endif
  </code></pre>