标签:cpp
__declspec(noinline) int __tmainCRTStartup( void ) { int initret; int mainret=0; int managedapp; #ifdef _WINMAIN_ _TUCHAR *lpszCommandLine; STARTUPINFOW StartupInfo; GetStartupInfoW( &StartupInfo ); #endif /* _WINMAIN_ */ #ifdef _M_IX86 /* * Enable app termination when heap corruption is detected on * Windows Vista and above. This is a no-op on down-level OS's * and enabled by default for 64-bit processes. */ if (!_NoHeapEnableTerminationOnCorruption) { HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); } #endif /* _M_IX86 */ /* * Determine if this is a managed application */ managedapp = check_managed_app(); if ( !_heap_init() ) /* initialize heap */ fast_error_exit(_RT_HEAPINIT); /* write message and die */ if( !_mtinit() ) /* initialize multi-thread */ fast_error_exit(_RT_THREAD); /* write message and die */ /* Enable buffer count checking if linking against static lib */ _CrtSetCheckCount(TRUE); /* * Initialize the Runtime Checks stuff */ #ifdef _RTC _RTC_Initialize(); #endif /* _RTC */ /* * Guard the remainder of the initialization code and the call * to user's main, or WinMain, function in a __try/__except * statement. */ __try { if ( _ioinit() < 0 ) /* initialize lowio */ _amsg_exit(_RT_LOWIOINIT); /* get wide cmd line info */ _tcmdln = (_TSCHAR *)GetCommandLineT(); /* get wide environ info */ _tenvptr = (_TSCHAR *)GetEnvironmentStringsT(); if ( _tsetargv() < 0 ) _amsg_exit(_RT_SPACEARG); if ( _tsetenvp() < 0 ) _amsg_exit(_RT_SPACEENV); initret = _cinit(TRUE); /* do C data initialize */ if (initret != 0) _amsg_exit(initret); #ifdef _WINMAIN_ lpszCommandLine = _twincmdln(); mainret = _tWinMain( (HINSTANCE)&__ImageBase, WinMain函数 NULL, lpszCommandLine, StartupInfo.dwFlags & STARTF_USESHOWWINDOW ? StartupInfo.wShowWindow : SW_SHOWDEFAULT ); #else /* _WINMAIN_ */ _tinitenv = _tenviron; mainret = _tmain(__argc, _targv, _tenviron); 此处才是真正的main函数 #endif /* _WINMAIN_ */ if ( !managedapp ) exit(mainret); 执行完后调用exit函数 _cexit(); 做善后处理 } __except ( _XcptFilter(GetExceptionCode(), GetExceptionInformation()) ) { /* * Should never reach here */ mainret = GetExceptionCode(); if ( !managedapp ) _exit(mainret); _c_exit(); } /* end of try - except */ return mainret; }
标签:cpp
原文地址:http://blog.csdn.net/u011185633/article/details/44872669