main WinMain _tmain的区别

摘要:  所有的程序都是运行有main里的 winmain只是包装了main main 请求系统调用时,一般我们是看不到的,windows上进

行的是为它创建一个cmd输入显示窗口,

 

 win32 mfc中也有cmd只是 我们关闭窗口时 线程先接收到 WM_DESTROY 消息 后直接退出, cmd来不急显示。

main是C/C++程序无窗口的console程序的入口

WinMain是win32 GUI Application程序的入口

_t是为了UNICDOE的兼容,_tmain()是个宏,

#define _tmain      main
#define _tWinMain   WinMain

main 是一般C程序的进入点:

int main(int argc, char *argv[ ], char *envp[ ]);

{

    ……

}

WinMain 则是Windows 程序的进入点:

int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpCmdLine,     int nCmdShow)

{

……

}

 

在 Win32 中 CALLBACK 被定义为 __stdcall,是一种函数调用习惯,关系到参数挤压到堆栈的次序,以及处理堆栈的责任归属。其它的函数调用习惯还有_pascal和_cdecl 。

当Windows的「外壳」(shell,例如 Windows  3.1的程序管理员或Windows 95的文件总管)侦测到使用者意欲执行一个 Windows 程序,于是调用加载器把该程序加载,然后调用C startup code,后者再调用WinMain,开始执进程序。WinMain 的四个参数由作业系统传递进来。

 

 

winmain  和main都可以出现命令行窗口,winmain的命令行窗口在不system("pause");时不会出现,main下始终为静默

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值