Posted on 2008-05-09 23:38
Herbert 閱讀(254)
評論(0) 編輯 收藏 引用
檢索指向新進程的完整命令行的指針。
• 檢索指向新進程的環境變量的指針。
• 對C / C + +運行期的全局變量進行初始化。如果包含了S t d L i b . h 文件,代碼就能訪問這些變量。
• 對C 運行期內存單元分配函數(m a l l o c 和c a l l o c )和其他低層輸入/輸出例程使用的內存棧進行初始化。
• 為所有全局和靜態C + +類對象調用構造函數。
當所有這些初始化操作完成后,C / C + +啟動函數就調用應用程序的進入點函數。如果編寫了一個w Wi n M a i n 函數,它將以下面的形式被調用 :
GetStartupInfo(&StartupInfo);
int nMainRetVal = wWinMain(GetMjduleHandle(NULL),
NULL, pszCommandLineUnicode,
(StartupInfo.dwFlags & STARTF_USESHOWWINDOW) ?
StartupInfo.wShowWindow:SW_SHOWDEFAULT);
如果編寫了一個Wi n M a i n 函數,它將以下面的形式被調用:
GetStartupInfo(&StartupInfo);
int nMainReLVal = WinMain(GetModuleHandle(NULL),
NULL, pszCommandLineANSI,
(StartupInfo.dwFlags & STARTF_USESHOWWINDOW) ?
Startupinfo.wShowWindow:SW_SHOWDEFAULT);
如果編寫了一個w m a i n或m a i n 函數,它將以下面的形式被調用:
int nMainRetVal = wmain(__argc, __wargv, _wenviron);
int nMainRetVal = main(_argc, __argv, _environ);
當進入點函數返回時,啟動函數便調用C 運行期的e x i t 函數,將返回值(n M a i n R e t Va l )傳遞給它。E x i t 函數負責下面的操作:
• 調用由_onexit函數的調用而注冊的任何函數。
• 為所有全局的和靜態的C++類對象調用析構函數。
• 調用操作系統的ExitProcess函數,將nMainRetVal傳遞給它。這使得該操作系統能夠撤消進程并設置它的e x i t 代碼。
下表顯示了程序能夠使用的C / C + +運行期全局變量。