Posted on 2008-05-09 23:38
Herbert 阅读(245)
评论(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 + +运行期全局变量。