title: Why is void main() so popular?
body: <p>In C89/C99/C11, in a freestanding environment, the entry point function is implementation-defined. In a hosted environment, it must be <code>int main</code> in a strictly-conforming program. Most modern compilers make <code>void main</code> an error. However, I see many users using <code>void main</code>. Even if it is allowed in a non-conforming compiler, why would one use it? I see no practical reason why <code>void main</code> would be preferred to <code>int main</code>. Even in C89, it's undefined behavior to leave off the <code>return</code>.</p>
  
  <p>Is there a historical reason for the popularity of <code>void main</code>?</p>
  
  <p>I don't believe my question is primarily opinion-based. Some valid ideas have already been presented in this thread, such as Microsoft's <code>void main</code> extension, and since Window's popularity, as well as it being the result of C books reprinting incorrect information. These are objective and historical reasons.</p>