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