Visual C++ 运行窗口一闪而过的解决方法

2023-11-04

本文简单介绍了Visual C++编写运行程序的步骤,解决Visual C++ 2010开发环境中运行程序时运行窗口一闪而过的问题,总结了“断点调试(F5)方法”、“开始执行(Ctrl+F5)方法”、“调试工具条方法”、“暂停语句或者输入等待方法”共4种方法,推荐使用非侵入的“开始执行(Ctrl+F5)”或者“调试工具条”解决方法。主要包括以下几个方面:

  • 控制台应用程序编写步骤
  • 断点调试(F5)方法
  • “开始执行”(Ctrl+F5)方法
  • “调试”工具条方法
  • 暂停语句或者输入等待方法

本文使用的软件版本:

  • Windows 10
  • Visual C++ 2010 Express

 

1.  控制台应用程序编写步骤

在Windows操作系统中通常会创建两类应用程序。一类是图形界面应用程序(GUI),一类是控制台应用程序(CUI)。C++语言的初学者在学习语法时一般都是从编写控制台应用程序开始的,如在使用Visual C++ 2010编写运行第一个C++程序一文中就介绍了如何使用Visual C++创建一个Win32控制台项目,编写并运行自己的第一个C++程序。根据上文,可以总结出编写Win32控制台应用程序的步骤为:

(1)创建Win32控制台项目

(2)编写C++源代码文件

(3)编译代码生成目标文件

(4)链接目标文件生成可执行程序文件

(5)调试/运行生成的程序文件

在Visual C++ 2010 Express集成开发环境中,第3步“编译”(Compile)和第4步“链接”(Link)又可以合称为“生成”(Build),就是把编译和链接过程一起完成,直接“生成”最终的可执行文件。最后一步“调试和运行”的目标就是“生成”阶段创建的可执行文件。如果在“生成”过程中发生任何错误,这个可执行文件都不会“生成”,第5步的运行也就无法进行下去了。

在集成开发环境中点击工具栏上那个绿色的小三角“启动调试(F5)”时,如果源程序有修改或者可执行文件不存在会弹出是否生成可执行程序的对话框,如下图所示:

这时肯定是要生成的了,点击“是”以后,输出框中会出现一些信息如下:

特别要注意的是最后一句,提示“程序Hello.exe已退出”,这说明这个程序已经正确“生成”并运行了,可是什么反映也没有怎么就退出了呢?

根据如何在命令提示符窗口下运行Win32控制台应用程序文中所说,打开命令提示符,进入到项目文件夹下的Debug目录,可以发现生成的Hello.exe文件,输入文件名还可以执行。这充分说明了程序的“生成”过程是完全正确的,只是在集成环境下运行时一闪而过,没法看清楚而已。每次“生成”完成后,使用命令提示符窗口运行毕竟显得有些麻烦,能不能不脱离开发环境直接察看程序运行的结果呢?

2. 断点调试(F5)方法

断点执行方法其实就是前面使用的点击绿色小三角的方法,也可以按F5键来实现这一功能。为什么在前面这个方法不能显示程序执行结果,现在就可以了呢?其实是因为这个方法本来是用来调试程序用的,如果在程序中设置了断点,在执行时就会在断点的地方停下来;如果没有断点那么程序的运行就一马平川,直至结束了。

知道了这个原理,我们只需要在最后一句 return 0 前面的灰色空白处双击设置一个红色圆点的断点。这个时候再按绿色小三角进行断点调试,就可以看到程序在断点处停了下来,红色断点上的黄色箭头指出了程序目前运行到了return语句处,并在此等待进一步的调试执行。这时可观察程序输出的结果,想要继续调试时就再点一下绿色小三角或者按F5键就行了。

3 开始执行方法(Ctrl+F5)

“开始执行”方法也称为Ctrl+F5方法,是“调试”菜单中的一个命令项,就是那个淡绿色的小三角,快捷键为Ctrl+F5。使用“开始执行”按钮会执行“生成”过程,然后运行程序,程序结束时命令提示符窗口不会关闭,而是出现“请按任意键继续...”的等待信息,方便观察程序输出的结果,在输入任意键后才会退出命令提示符窗口。

4 “调试”工具条方法

微型“生成”工具条其实是将“开始执行”按钮放到工具条上,方便随时点击。在工具栏空白位置点击鼠标右键,选择“自定义...”弹出工具栏自定义对话框如下:

 勾选其中的“调试”工具栏,“关闭”自定义对话框后在工具栏上就会出现微型“调试”工具条,也会看到那个淡绿色的“开始执行”按钮。

 

 如果“调试”工具栏中没有出现这个淡绿色的“开始执行”按钮,可点工具栏右下角的小三角,出现“添加或移除按钮”选项时再选择“自定义...”,打开命令自定义对话框如下:

 点击右侧的“添加命令”按钮,打开添加命令对话框如下:

 

在“类别”栏中选择“调试”,然后在“命令”栏中选择“开始执行”,最后“确定”。这时就可以在“生成”工具栏中看到这个淡绿色的“开始执行”按钮了。

5 暂停语句或者输入等待方法

还有一类方法,是在程序末尾添加暂停语句如system("pause")在程序结束前暂停,或者添加输入语句如getChar()等在程序结束前读取键盘输入,也能起到了暂停程序执行的效果。但这两种方法对程序代码有侵入,从某种程度上来说是改变了程序的功能,所以并不提倡使用。

如果使用了system("pause")来暂停程序执行,同时又按了“开始执行”的淡绿色按钮,那么程序运行时就会出现两次暂停。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual C++ 运行窗口一闪而过的解决方法 的相关文章

随机推荐

  • linux sys pread64,pread()函数

    pread是一个函数 用于带偏移量地原子的从文件中读取数据 带偏移量地原子的从文件中读取数据 函数原型 ssize t pread intfd void buf size tcount off toffset 用法 返回值 成功 返回成功读
  • 新手 Java 编程思想应该如何提高?

    简化一下就是从理解抽象开始 最先要理解的就是 类 接口通常被理解为 全抽象 在Java中也有重要地位和作用 其次就是抽象类介于接口和类之间的概念 另外理解面向对象编程过程 逐渐掌握封装 继承 多态的应用从而形成一个完整的面相对象编程思想 理
  • script 脚本标签中 defer 和 async (延缓 和 异步)

    原文章 https segmentfault com q 1010000000640869 本文章讲解几个点
  • 运营新人也可以做的副业平台丨闲鱼运营(下)

    文章上半部分给大家深度分享了关于闲鱼的赚钱方法和店铺权重建设该如何提升 如果没有看上半部分内容 直接翻阅主页就可以查阅到 接下来我们分享关于闲鱼运营的下半部分 店铺运营 闲鱼何运营总共分为三个部分 第一个部分是闲鱼养号 第二部分是内容编辑
  • K8s二进制部署-flanneld报(Couldn‘t fetch network config)

    1 报错提示 将网络配置信息写入了ETCD中 启动flanneld测试时一直报错 具体报错如下 root master1 tail 100f var log messages Dec 15 23 39 22 localhost flanne
  • 多文件编辑作业(2023.1.10)

    第一题 main c include head h int main int argc const char argv char str hello my student int start 0 int end strlen str 1 M
  • 提供一个用于计算两个point之间的距离方法_汇总

    作者 Tom Hardy Date 2020 02 18 来源 汇总 基于3D点云的深度学习方法 前言 三维数据通常可以用不同的格式表示 包括深度图像 点云 网格和体积网格 点云表示作为一种常用的表示格式 在三维空间中保留了原始的几何信息
  • 已解决报错UnboundLocalError: local variable ‘title‘ referenced before assignment

    1 今天抓取某网站的数据时 显示报错UnboundLocalError local variable title referenced before assignment Traceback most recent call last Fi
  • 无法启动64位idea,无法启动idea64.exe的一种原因(意外删除破解文件导致无法打开idea)

    前言 突然有一天 我的IDEA出现了问题 点击桌面快捷方式的idea毫无反应 无奈之下重装了IDEA 但还是有相同的问题 无法打开64位的idea 网上找了一堆博客 花了两个多小时终于解决了 写篇博客记录下这个问题 1 首先打开idea b
  • 初识网络安全(黑客技术)

    目录 前言 一 安全事件案例 二 网络安全行业公司 三 网络安全岗位 四 网络安全网站 五 src漏洞平台 总结 前言 网络安全是指保护计算机网络和网络上的数据免受未经授权的访问 使用 泄露 破坏和干扰的一系列措施和技术 在当今数字化时代
  • JAVA web 获取系统时间

  • ROS---保存地图

    建立save map sh文件夹 bin bash rosrun map server map saver f catkin ws src hypharos minicar launch map mymap 保存地图时我们进入此文件所在文件
  • 从零实现一套属于自己的UI框架-发布到npm

    汤小梦 https juejin im post 5e200ee86fb9a02fdd38986d 不知不觉马上就要放假了 写一篇文章祝愿 2020 越来越好 如今前端工程师的要求越来越高了 需要掌握的技术点越来越多了 会一些基本的前端技能
  • 华为云 CentOS 8 下 Nginx 1.20 & PHP 8.2 安装

    Nginx 1 20 版本安装 使用 dnf module 选择 nginx 版本 如果不选择 默认安装 1 14 版 1 先 RESET 一下 xxx ecs 209716 sudo dnf module reset nginx Repo
  • 子网划分,子网掩码

    1 IP地址分类 有类编址 所谓的同一网段就是 网络位一模一样 才叫在同一网段 否则不是在同一网段 网络位 主机位 固定电话的区号 025 主机你的电话号码 85562264 同一区号 之间 漫游费 南京 徐州 苏州 漫游 借助路由器转发我
  • Qt多线程中的moveToThread()的简单用法

    之前在项目中用到了Qt的多线程 因为以前用的一直是用一个类直接继承QThread 然后再重写run 方法 需要注意的是 QThread只有run函数是在新线程里的 其他所有函数都在QThread生成的线程里 后来查阅了一些资料才知道 Qt有
  • 00_Ubuntu系统入门

    目录 前言 一 Ubuntu系统安装 1 1 VMware15安装虚拟机不兼容 无法打开 1 2 Ubuntu联网问题 二 Ubuntu系统入门 2 1 Ubuntu系统初体验 2 2 Ubuntu终端操作 2 3 shell操作 2 3
  • 关于汇编语言寄存器和指令操作的整理

    最近汇编学到后面的内容 越来越觉得前面的基础没有掌握好 弄得最后编写汇编程序的时候 寄存器瞎用 没有一点的规矩 中断操作也不知道是对哪个寄存器里的数进行操作 每次做一个小程序 都得翻书后面的INT中断查询表 感觉很不爽 今天花了大半天把几本
  • 数据通信——因特网基础

    引言 之前最开始并接触学习的是华为的路由器交换机等知识 后来慢慢的扩充到了计算机网络 现在在备考计网专业课 因此写一下我对计网现阶段知识的认知 也是对考研备考时的一个复习 我将用易于理解的逻辑阐述下计网中难以理解的知识 希望大家也多多补充并
  • Visual C++ 运行窗口一闪而过的解决方法

    本文简单介绍了Visual C 编写运行程序的步骤 解决Visual C 2010开发环境中运行程序时运行窗口一闪而过的问题 总结了 断点调试 F5 方法 开始执行 Ctrl F5 方法 调试工具条方法 暂停语句或者输入等待方法 共4种方法