2个回答
展开全部
楼主你好!
关于c 和 c++语言 程序的入口函数是int main()函数.
当我们编译运行一个c(c++)文件,编译器提供了几个重要的工具cl.exe link.exe.
编译器将文件装载,用cl来翻译库文件生成obj文件,再调用link来链接库文件(crt C Runtime)
生成exe文件.
程序运行是这样的流程:双击exe.这个时候系统shell会收到消息.为该应用程序做一些准备工作
:产生进程,主线程并分配内存空间等.当产生主线程时候这个时候就会调用main函数进入程序.
执行代码体.
对于MFC来说,我们看不到main函数是因为MFC用另外的方法对其进行的包装.
程序流程:双击exe.系统shell收到消息.为该应用程序做一些准备工作:
产生进程,主线程并分配内存空间等.注意CDemoWinApp(自定义的一个为Demo的工程)刚好是
CWinThread继承而来.因此程序首先是调用了CDemoWinApp中一个全局变量theApp.接着初始了
CDemoWinApp(),然后就进入到传说中WinMain函数.但此时在APPMODUL.CPP中(MFC库文件)会看到
是_tWinMain().然后调用AfxWinMain()该函数的声明在WINMAIN.CPP中.接着调用 AfxWinInit()
函数(在APPINIT.CPP中)进行初始化工作.接着往下看啦,AfxInitThread()函数(THREADCORE.CPP
中).接着做一个消息的勾子.然后会调用我们所熟悉InitApplication().InitInstance()这又回
到我程序中.接着从InitInstance往下运行
楼主可以自己去那些CPP文件去设断点.然后跟踪看看.就会发现MFC是非常的强大及其狡猾的.
希望对楼主有帮助,如果有疑问,可以在线留言!
关于c 和 c++语言 程序的入口函数是int main()函数.
当我们编译运行一个c(c++)文件,编译器提供了几个重要的工具cl.exe link.exe.
编译器将文件装载,用cl来翻译库文件生成obj文件,再调用link来链接库文件(crt C Runtime)
生成exe文件.
程序运行是这样的流程:双击exe.这个时候系统shell会收到消息.为该应用程序做一些准备工作
:产生进程,主线程并分配内存空间等.当产生主线程时候这个时候就会调用main函数进入程序.
执行代码体.
对于MFC来说,我们看不到main函数是因为MFC用另外的方法对其进行的包装.
程序流程:双击exe.系统shell收到消息.为该应用程序做一些准备工作:
产生进程,主线程并分配内存空间等.注意CDemoWinApp(自定义的一个为Demo的工程)刚好是
CWinThread继承而来.因此程序首先是调用了CDemoWinApp中一个全局变量theApp.接着初始了
CDemoWinApp(),然后就进入到传说中WinMain函数.但此时在APPMODUL.CPP中(MFC库文件)会看到
是_tWinMain().然后调用AfxWinMain()该函数的声明在WINMAIN.CPP中.接着调用 AfxWinInit()
函数(在APPINIT.CPP中)进行初始化工作.接着往下看啦,AfxInitThread()函数(THREADCORE.CPP
中).接着做一个消息的勾子.然后会调用我们所熟悉InitApplication().InitInstance()这又回
到我程序中.接着从InitInstance往下运行
楼主可以自己去那些CPP文件去设断点.然后跟踪看看.就会发现MFC是非常的强大及其狡猾的.
希望对楼主有帮助,如果有疑问,可以在线留言!
展开全部
WinMain() 相当于 c 下面的 main 函数,它是每个程序的入口。
它由系统自动调用
每当你通过双击程序图标或者在 cmd 输入程序命令行等方式来启动程序时:
首先系统的“外壳 shell —— 在 Windows 中即资源管理器”会侦测你的启动程序的请求
shell 此时会调用程序加载器把程序加载到内存中
然后系统调用 C startup code (C runtime 功能)
C startup code 最后调用程序里面的 WinMain() ,此时程序里面的代码才开始被系统逐行执行,程序正式启动。
不知道 LZ 是不是想这知道这方面的内容呢?
它由系统自动调用
每当你通过双击程序图标或者在 cmd 输入程序命令行等方式来启动程序时:
首先系统的“外壳 shell —— 在 Windows 中即资源管理器”会侦测你的启动程序的请求
shell 此时会调用程序加载器把程序加载到内存中
然后系统调用 C startup code (C runtime 功能)
C startup code 最后调用程序里面的 WinMain() ,此时程序里面的代码才开始被系统逐行执行,程序正式启动。
不知道 LZ 是不是想这知道这方面的内容呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询