On Feb 25, 2012, at 5:15 PM, Random832 wrote:


This is not true in my experience. If it was ever true, it's not true
today (with MSVC, anyway. GCC may be different, but if there is a
'system-provided main()' it's GCC, or cygwin or mingw, and not anything
from microsoft, that is providing it). The procedure "provided by
windows" (provided by MSVC, actually) that does that is in fact called
WinMainCRTStartup.

WinMainCRTStartup isn't the replacement for main.   It's the replacement for begin or location zero back in the old days.  (Anybody remember seeing p&P6 printed by errant programs?).   There are different versions of that CRT startup (actually all compiled from the same module with ifdefs) that start:

main - for non-MFC console apps
wmain - same thing but with wchar_t arguments (SOMETHING C/C++ standards hasn't ever addressed to my satisfaction).
WinMain - MFC main function
wWinMain - Ditto, with wchar_t

Actually the bulk of the CRT involves converting between the command line argument as a string and argc/argv (something UNIX does by the OS), and some gook necessary to support C++.

The  fake UNIX environment (POSIX) (read/write/seek, etc...) actually is NOT initialized here, but when it is actually referenced.