title: Compatibility of C89/C90, C99 and C11
body: <p>I just read: <a href="https://en.wikipedia.org/wiki/C_%28programming_language%29" rel="noreferrer">C Wikipedia entry</a>. As far as I know there are 3 different versions of C that are widely used: C89, C99 and C11. My question concerns the compatibility of source code of different versions. 
  Suppose I am going to write a program (in C11 since it is the latest version) and import a library written in C89. Are these two versions going to work together properly when compiling all files according to the C11 specification?</p>
  
  <p><strong>Question 1</strong>: 
  Are the newer versions of C i.e. C99, C11 supersets of older C versions? By superset I mean, that old code will compile without errors and the same meaning when compiled according to newer C specifications. </p>
  
  <p>I just read, that the // has different meanings in C89 and C99. Apart from this feature, are C99 and C11 supersets of C89?</p>
  
  <p>If the answer to Question 1 is no, then I got another 2 questions. </p>
  
  <ol>
  <li><p>How to 'port' old code to the new versions? Is there a document which explains this procedure? </p></li>
  <li><p>Is it better to use C89 or C99 or C11?</p></li>
  </ol>
  
  <p>Thanks for your help in advance.</p>
  
  <p><strong>EDIT</strong>: changed ISO C to C89.</p>