问题, 编译器不推荐这么写。
图1-13 编译程序
第四步,除错
在一个C++程序中可能出现下列两种类型的错误: 1. 2. 语法错误:是指源程序代码中不符合C++语法规定的内容。
语义错误:是指源
程序代码中存在逻辑错误。
编译器在进行语法检查时会向用户
报告源程序代码中的语法错误, 并列出错误位置、 出 错原因等信息,检查出来的错误会被显示在 VC 6.0 环境的 Build 窗口。用鼠标双击错误 信息提示, 编辑器会自动在程序段中指向对应的出错行。 在出错的源程序行中仔细地查找出 错的原因。 但是,编译器并不能自动检查出代码中存在的语义错误;也就是说,没有语法错误的源 程序代码并不意味着一定会没有语义错误。 必须等到运行时才能测试出程序是否符合预先设 定的逻辑。 如果程序在运行时出现了异常情况或逻辑错误, 则可断定代码中存在着语义错误。 这是应根据输出结果进行检查。 如下图所示,编译器提示:在Question.c的第10行,发生了 C2065 错误,变量 j 从 没有被声明就被使用了。
图1-14 查看出错信息
我们发现上面的错误是因为误把 i 写成了 j,只要改回来,这个错误就被修改好了。 运行程序 我们至少有两种方法运行一个控制台类型的 C 程序。一种是通过工具栏,一种是通过 命令行。
第一种方法——工具栏
单击 Build 工具栏中的红色感叹号按钮,就可以运行一个编译好的程序:
如果该程序在上一次被编译后又被修改, 下面窗口将会弹出, 问我们是否要把最新的代 码重新编译。我们一般都选择 "Yes"。
图1-15重新编译源程序
随后该程序就会在一个新弹出的窗口中被运行。
图1-16 运行结果
第二种方法——命令行
下面显示了命令行运行该程序的方法。 我们首先切换到编译好的程序所在的目录, 然后 输入该程序的名字就可以运行。 在本例中,我们输入的是 DemoQuestion.exe。后面的 .exe 可以输入,也可以运行该程 序。
图1-17 在命令提示符下运行程序
在上面例子中,主要用到了两个命令:cd 和 dir 。 cd 命令用于进入目录,是 Come to Directory 的缩写。简单的,有三种情况: "cd [目录名]" : 进入目录 "目录名"。 "cd \" : 回到根目录。 "cd .." : 回到上一层目录。两个点 ".." 代表父目录,也就是上一层目录。 dir 命令可以显示当前目录下所有的文件和文件夹,是 DIRectory 的缩写。
调试程序 - 设置断点
设置断点是跟踪程序实际运行流程的最好方法。在 Debug 模式下,程序可以再断点处 停止,我们可以让程序单步执行,来确认程序是否在按照我们所预想的方式在运行。
第一步,设置断点
将鼠标停留在要被暂停的那一行,选择工具栏按钮 "Insert/Remove Breakpoint (F9)",就 可以添加一个断点。如果该行已经被设置了断电,那么该断点会被删除。
图1-18 设置断点
第二步,开始调试
如下图所示,选择菜单 "Go (F5)",就可以开始调试程序。
图1-19 调试程序
VC 环境会进入调试模式,并且目标程序会在断点处被暂停。
第三步,单步运行
选择菜单或者工具栏的 "Step Over (F10)" 按钮,可以进行程序单步运行。不断选择
"F10",程序会一步一步地被执行。
图1-20 单步运行
调试程序 - 动态察看变量的值
单步调试程序的过程中,我们可以在 Watch 窗口中动态地察看变量的值。
第一种,自动查看
在 Variables 子窗口中会自动显示当前运行上下文中的变量的值。
图1-21 查看内存变量
第二种,添加变量到 Watch 列表
如果本地变量比较多,自动显示的窗口比较混乱,您可以在 Watch
列表中添加自己想 要监控的变量名。例如,下图中我们在 Watch1 子窗口中添加了变量 "i":
图1-22添加变量到 Watch 列表
添加结束后,该变量的值会被显示出来。并且随着单步调试的进行,我们会看到变量 i
的值逐渐递增。
图1-23 观察内存变量的值
如果需要修改已有的源程序,打开“File”菜单,选择“open”命令,会出现“打开” 对话框,如图1-24所示。浏览磁盘中的文件和文件夹,找到要修改的文件,双击文件名, VC6会将文件的工作区加载到集成开发环境。之后就可以队员程序进行编辑、编译、链接 和运行了。
图1-23 加载文件对话框