title: What are the incompatible differences between C(99) and C++(11)?
body: <p>This question was triggered by replie(s) to a <a href="http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/">post by Herb Sutter</a> where he explained MS's decision to not support/make a C99 compiler but just go with the C(99) features that are in the C++(11) standard anyway.</p>
  
  <p>One <a href="http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/#comment-5446">commenter replied</a>: </p>
  
  <blockquote>
    <p>(...) C is important and deserves at least a little bit of attention.</p>
    
    <p>There is a LOT of existing code out there that is valid C but is not
    valid C++. That code is not likely to be rewritten (...) </p>
  </blockquote>
  
  <p>Since I only program in MS C++, I really don't know "pure" C that well, i.e. I have no ready picture of what details of the C++-language I'm using are not in C(99) and I have little clues where some C99 code would not work as-is in a C++ compiler. </p>
  
  <p>Note that I know about the C99 only <code>restrict</code> keyword which to me <em>seems</em> to have very narrow application and about variable-length-arrays (of which I'm not sure how widespread or important they are).</p>
  
  <p>Also, I'm very interested whether there are any important semantic differences or gotchas, that is, C(99) code that will <em>compile</em> under C++(11) but do something differently with the C++ compiler than with the C compiler.</p>
  
  <hr>
  
  <p>Quick links: External resources from the answers:</p>
  
  <ul>
  <li><a href="http://en.wikipedia.org/wiki/Compatibility_of_C_and_C++">Wikipedia page</a> </li>
  <li><a href="http://david.tribble.com/text/cdiffs.htm">David R. Tribble's comparison</a> (from 2001) </li>
  <li>C++11 standard: <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf</a> (section C.1)</li>
  </ul>