c ++使用winmain()

Jac*_*ack 0 c++ winapi winmain

我刚开始用c ++学习windows编程.我有这个疯狂的形象,win32编程基于调用windows函数并向它们发送参数.就像,当你想创建窗口时,你调用一些处理Windows GUI的win32函数并说"嗨,请创建我的新窗口,100 x 100 px,带两个按钮",并且GUI功能说"嗨,没问题"当发生某些事情时,如用户点击一个按钮,我将更改位于此位置的此变量xy".

所以,我认为它与控制台编程非常相似.但是第一条指令让我感到惊讶.我一直认为每个程序首先执行main()函数.因此,当我启动应用程序时,Windows会在堆栈顶部存储一些参数并运行该应用程序.所以我假设初始化main()只是一种c ++方式告诉编译器第一条指令应该在哪里.

但是在win32编程中,有一个名为WinMain()的函数首先启动.所以我有点困惑.我认为规则是编译器必须有main()开始,main只是定义它的起始位置,就像一些起始点标识符.

那么,请问为什么WinMain()函数而不是main()?当我认为C++编程与汇编程序一样合理时,它又让我感到困惑.

gre*_*ade 5

main()是任意的入口点WinMain().该标准仅需要一个以main一致性命名的函数.入口点(无论是mainWinMain)实际上是由一个隐藏的功能,那就是所谓的真正的入口点.在某些平台上,"真正的"入口点被称为_start.正是这个函数执行所有初始工作,如初始化全局变量,设置环境等,然后调用main().在Windows上,WinMain()如果可用,则启动该启动功能.

编辑:查看此答案以获得更详细的说明.