>>22Nope, void functioname is a C procedure.
Functions are returning values,b Main is s function that returns an error code.
void main is bad because it treats main as procedure, not a function(omitting the return value). To simplify programming there was decision to silently return 0 and have implicit int for main so this "main(){}" is a legal program translating to "int main(){return 0;}".
void main is an illogical way to handle it:at cost of saving few bytes(return) you can corrupt the stack or cause the C runtime to parse something as return value(depending on implementation and OS) if the runtime forces a return value from the stack.
GCC silently inserts return 0 anyway and treats void main as int main, so any argument that this could shave a few bytes of executable size are invalid(both have same size with GCC).
Microsofts C compiler is source of all kinds of intolerable cruft(incompatible extensions) and quirks which never will be standard, such as void main. With all half-broken C code only MSVC compiles it gives microsoft a "embrace,extend and extinguish" advantage which others have to handle:the message is "we control the desktop, we can do whatever we like and you have to adapt to us".
When Ballmer screams "Developers!Developers!Developers!" he really means "we accept any kind of developers and tolerate them for a numerical advantage in programmer base".
So thats why void main exists today and compiles.