title: C: Why isn't size_t a C keyword?
body: <p><code>sizeof</code> is a C <em>keyword</em>. It returns the size in a type named <code>size_t</code>. However, <code>size_t</code> is <strong>not</strong> a keyword, but is defined primarily in <strong><code>stddef.h</code></strong> and probably other C standard header files too.</p>
  
  <p>Consider a scenario where you want to create a C program which <strong>does not</strong> include any C standard headers or libraries. (Like for example, if you are creating an OS kernel.) Now, in such code, <code>sizeof</code> can be used (it is a C keyword, so it is a part of the <em>language</em>), but the type that it returns (<code>size_t</code>) is not available!</p>
  
  <p>Does not this signify some kind of a problem in the C standard specification? Can you clarify this?</p>