title: Forcing compiler to C99 standard
body: <p>I was coding on my project when I discovered that the anonymous structs I've been using for a while are actually only available in C11, not C99, the standard I want to code against.</p>
  
  <p>Given the following code:</p>
  
  <pre><code>struct data {
      int a;
      struct {
          int b;
          int c;
      };
  };
  
  int main()
  {
      struct data d;
  
      d.a = 0;
      d.b = 1;
      d.c = 2;
      return 0;
  }
  </code></pre>
  
  <p>This code should only compile in C11 (or if compiler extensions provide this feature and are enabled). So let's see the results on different compilers:</p>
  
  <h3>clang 5</h3>
  
  <pre><code>compiler:
      Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
      Target: x86_64-apple-darwin13.1.0
      Thread model: posix
  command: 
      clang -std=c99 -Wall test.c -o test
  result: 
      **OK**
  </code></pre>
  
  <h3>gcc 4.1</h3>
  
  <pre><code>compiler:
      gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
  command: 
      gcc -std=c99 -Wall test.c -o test
  result: 
      **NOT OK**
      test.c:6: warning: declaration does not declare anything
      test.c: In function 'main':
      test.c:14: error: 'struct data' has no member named 'b'
      test.c:15: error: 'struct data' has no member named 'c'
  </code></pre>
  
  <h3>gcc 4.7</h3>
  
  <pre><code>compiler:
      gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)
  command: 
      gcc -std=c99 -Wall test.c -o test
  result: 
      **OK**
      test.c: In function 'main':
      test.c:11:14: warning: variable 'd' set but not used [-Wunused-but-set-variable]
  </code></pre>
  
  <p>I've always tried to force the compiler to C99 mode by specifying <code>-std=c99</code>, but obviously this doesn't work (except for gcc 4.1 which compiles fine without the -std parameter). 
  So my question is now, how can I force the compilers gcc and clang, in any version, to issue an error if I write code that does not conform to the standard I specify using <code>-std</code>? Is there some command line argument that I don't know of?</p>