关于VS运行结果窗口的保留及屏蔽操作

1、保留运行结果窗口

针对vs运行结果窗口总是一闪而过的问题,这里介绍下常用的三种解决方案:

1.1、使用DOS指令pause进行窗口暂停

        可以在函数return之前加上如下代码,"system"表示系统调用;"pause"是DOS指令,用于函数的暂停。当程序运行到该行代码时,则会进行暂停,并在当前窗口提示"请按任意键继续";并等待我们按下任意键之后再继续执行下面的代码

							system("pause");

1.2、使用getchar()函数进行窗口保留

        可以在函数return之前加上如下代码。当程序运行到该行代码时,会停留在当前处并等待用户输入字符(该函数最后是以回车键作为输入结束标志),当我们按下回车键后再继续执行下面的代码

							 getchar();

1.3、通过对工程子系统属性设置为控制台来实现

        如下,对当前工程的子系统属性进行设置:

项目->属性->配置属性->链接器->系统->子系统->选择"控制台(/SUBSYSTEM:CONSOLE)"

在这里插入图片描述
        

2、屏蔽运行结果窗口显示的方法

        当我们不想要工程运行时弹出运行窗口(例如做成dll文件时对大量调试用的printf打印信息进行屏蔽),可以通过以下两种方式来解决。

2.1、使用#pragma comment设置连接器选项

        在文件中加上如下的预处理指令,对DOS窗口进行显示屏蔽。

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )

        (1)、连接器的“/subsystem:”选项参数用于告诉操作系统如何运行.exe文件,可以指定如下的四种方式:

  • CONSOLE:控制台;
  • WINDOWS:窗口;
  • NATIVE:本地;
  • POSIX;

当这个选项参数的值为“WINDOWS”,则表示该应用程序运行时不需要控制台,则此时不会显示控制台运行窗口。

        (2)、连接器的“/entry:”选项参数用于设置程序的入口函数;在VC下,连接器对控制台程序设置的入口函数是 mainCRTStartup,mainCRTStartup 再调用我们编写的 main 函数。所以,在上面的指令中,我们程序的入口函数还是我们写的main()函数;当然,我们也可以将其改成其他我们程序中定义的函数;则此时程序运行的入口点不再是main()函数,而是我们“/entry:”后面的函数

2.2、通过对工程子系统属性设置为窗口来实现

        
        对当前工程按照如下步骤进行设置:

        (1)、项目->属性->配置属性->链接器->系统->子系统->选择"窗口(/SUBSYSTEM:WINDOWS)";
        (2)、项目->属性->配置属性->链接器->高级->入口点->输入mainCRTStartup(程序的入口函数,这里也可以设置为其他程序中定义的函数名,但建议还是设置为mainCRTStartup)
在这里插入图片描述
        其实这两种方法是一致的,第一种也是通过预处理指令对工程的子系统属性进行设置;第二种则是直接在编译器上对工程的子系统属性进行设置。

总结

1、针对vs运行结果窗口总是一闪而过的问题,有如下三种方式解决:

  • 在函数return前加上  system(“pause”);   指令;
  • 在函数return前加上  getchar();   函数;
  • 通过"项目->属性->配置属性->链接器->系统->子系统->选择"控制台""进行设置;

2、当我们不想要工程运行时弹出窗口显示,有以下两种方式来解决:

  • 加上预处理指令  #pragma comment( linker, “/subsystem:“windows” /entry:“mainCRTStartup”” )
  • 通过更改工程子系统属性为窗口并设置好入口函数来实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值