title: Pure C vs Kernel C vs classic C
body: <p>I'm in my last year as a college student and I find myself in the perplexing situation in which, although I understand conceptually that there are some minor differences between these, like in classic C the function did not have prototypes, thankfully no longer in use, I can't pinpoint those precise distinctions among these three.<br>
  I would like some formal definitions, preferably indicating a written paper source, if there are any for:   </p>
  
  <ul>
  <li>Pure C: what does it mean, because I've seen it used extensively, or when one should use this without being misunderstood</li>
  <li>Kernel C: if there are any differences between Kernel C and Pure C in the sense of <em>language features</em>.</li>
  <li>classic C: by this I am referring to K&amp;R C, are there any practical uses besides legacy support? Is it useful for didactic purpose? </li>
  </ul>
  
  <p>Any other information or guidelines for identifying the (minor but concrete) differences, etc. If there are no (or almost no) notably discrepancies, I'd be very grateful for a definition which suggests so.</p>
  
  <p><em>Note</em>:<br>
  I'm not asking about <strong>C++</strong>, in lack of a better word, superset, or any other <strong>C</strong> related languages, which inherits some syntax or formatting.<br>
  Neither I'm talking about <strong>ANSI C99/C1X</strong> standard, as in way/style of writing code nor I am referring to additional libraries. To be more specific, as an example, C11 allows <em>anonymous</em> <code>structures</code> and <code>unions</code>, this is a <em>feature</em> which concerns the question.
  My focus is just on the language <em>itself and its features</em>, not trying to discuss libraries or compilers.<br>
  If the GNU/POSIX/ANSI/etc are now considered to include what we refer to as C, then shouldn't the terminology be GNU language?<br>
  Just to clear this out, the question is not meant to do a history of the language.</p>