title: How does size_t and the __w64, time_t and __int64 work?
body: <p>I am not a veteran in C or C++. I don't know the how<code>time_t</code> is defined and designed.
  Several posts like:  </p>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/471248/what-is-ultimately-a-time-t-typedef-to">What is ultimately a time_t typedef to?</a></li>
  <li><a href="https://stackoverflow.com/questions/2550774/what-is-size-t-in-c">What is size_t in C?</a></li>
  <li><a href="https://stackoverflow.com/questions/5813700/difference-between-size-t-and-stdsize-t">Difference between size_t and std::size_t</a></li>
  </ul>
  
  <p>But these posts only state what is <code>time_t</code> or <code>size_t</code>. It didn't state clearly how and where is time_t or size_t defined and declared.</p>
  
  <p>I am using <strong>WIN8 VS2012 Express C++</strong>. I searched the library and found that <code>size_t</code> is defined in <code>crtdefs.h</code> instead of <code>cstddef</code>.</p>
  
  <ul>
  <li>Why need types like <code>size_t</code>, <code>time_t</code>? We can let <code>sizeof</code> just return <code>unsigned int</code>.</li>
  <li>Why C++ library does not define <code>size_t</code>?</li>
  <li>Can I say size_t is <strong>NOT</strong> a C/C++ built-in type?</li>
  <li>I never need to include the corresponding header file in my program to use <code>size_t</code> or <code>time_t</code>(maybe they are defined in <code>std</code> namespace).</li>
  </ul>
  
  <p>I searched again in the library, and found <code>size_t</code> is defined as <code>typedef _W64 unsigned int   size_t</code>, and <code>_W64</code> is defined as <code>__w64</code>. Up here, I cannot search more on where is <code>__w64</code> is defined or declared.</p>
  
  <ul>
  <li>What is <code>__w64</code> type? It is not stated in the C++11/C99 standard.  </li>
  </ul>
  
  <p>Similarly when I searched the <code>time_t</code>, I found <code>__int6</code>. But does not know where <code>__int64</code> comes from.</p>