title: what actually sets the _WIN32 or _WIN64 preprocessor?
body: <p>what actually sets the _WIN32 or _WIN64 preprocessor definition in most of sources<br>
  All sources I found out are that there isn't any </p>
  
  <pre><code>#define _WIN32
  </code></pre>
  
  <p>nor</p>
  
  <pre><code>#define _WIN64
  </code></pre>
  
  <p>but as the source is compiled by GCC the preprocessor get into true condition as if definition has been written and defined,</p>
  
  <p>also question apply too to other OS keywords as it most likely has such the same behavior<br>
  Thanks much.</p>