程序的入口

操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点由连接程序设置, 不同的连接器选择的入口函数也不尽相同。在VC++下,连接器对控制台程序设置的入口函数是 mainCRTStartup,mainCRTStartup 再调用main 函数;对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup,WinMainCRTStartup 调用你自己写的 WinMain 函数。具体设置哪个入口点是由连接器的“/subsystem:”选项确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方式:CONSOLE|WINDOWS|NATIVE|POSIX。如果这个选项参数的值为 WINDOWS,则表示该应用程序运行时不需要控制台,有关连接器参数选项的详细说明请参考 MSDN 库。

以下四种组合,可以实现console和windows模式的混合,可以达到不弹出DOS窗口的效果,也可以达到在Windows程序中向控制台输出printf信息的目的。

 #pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
 #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
 #pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
 #pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )
 int APIENTRY WinMain(HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR      lpCmdLine,
 int        nCmdShow)
 {
       // ...
 }
 int main(void)
 {
       // ...
 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

Python之运行实现原理

来源:@mozillazg 链接:https://mozillazg.com/2016/04/apm-python-agent-principle.html 本...

33414
来自专栏抠抠空间

RESTful规范

1740
来自专栏Kevin-ZhangCG

[ SSH框架 ] Spring框架学习之一

2256
来自专栏企鹅号快讯

HttpClient使用详解

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不...

2805
来自专栏北京马哥教育

Python爬虫基础知识:Opener与Handler

豌豆贴心提醒,本文阅读时间6分钟 在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info and geturl urlopen返回的应答对...

3589
来自专栏Android干货

Android项目实战(四十六):Usb转串口通讯(CH34xUARTDriver)

2486
来自专栏Danny的专栏

ASP.NET中利用Application和Session统计在线人数、历史访问量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1133
来自专栏WindCoder

MySQL数据库对象与应用-MySQL程序开发单元测验

这是微专业参加单元测试后的试题及答案整理,分享出来,供大家参考,所有标红的为答案。

531
来自专栏张善友的专栏

初始化任务Bootstrapper

每个应用程序都需要在启动的时候做些初始化任务,在退出的时候做些清理工作,这类任务被归为Bootstrapper,在codeplex上的开源项目,详见 http:...

1825
来自专栏xingoo, 一个梦想做发明家的程序员

Spring MVC 基于Method的映射规则(注解版)

在Restful风格的web开发中,根据不同的请求方法使用相应的控制器处理逻辑成为核心需求,下面就看看如何在Spring MVC中识别不同的请求方法。 请...

1909

扫码关注云+社区