title: When main is defined without parameters, will argc and argv still be present on the stack?
body: <p>Consider the very simple:</p>
  
  <pre><code>int main(void) {
      return 0;
  }
  </code></pre>
  
  <p>I compiled it (with mingw32-gcc) and executed it as <code>main.exe foo bar</code>.</p>
  
  <p>Now, I had expected some sort of crash or error caused by a main function explicitly declared as being bereft of <strike>life</strike> parameters. The lack of errors led to this question, which is really four questions.</p>
  
  <ul>
  <li><p>Why does this work? <strong>Answer:</strong> Because the standard says so!</p></li>
  <li><p>Are the input parameters just ignored or is the stack prepared with argc &amp; argv silently? <strong>Answer:</strong> In this particular case, the stack is prepared.</p></li>
  <li><p>How do I verify the above? <strong>Answer:</strong> See rascher's answer.</p></li>
  <li><p>Is this platform dependant? <strong>Answer:</strong> Yes, and no.</p></li>
  </ul>