
1.2 Visual C++语言集成环境
C++语言是在C语言的基础上发展而来,它增加了面向对象的编程,成为当今最流行的一种程序设计语言。Visual C++是微软公司开发的,面向Windows编程的C++语言工具。它不仅支持C++语言的编程,也兼容C语言的编程。
1.2.1 启动VC++
选择“开始”→“所有程序”→Microsoft Visual Studio 6.0→Microsoft Visual C++ 6.0命令,可启动VC++,屏幕上将显示图1-2所示的窗口。
1.2.2 新建/打开源程序
新建:如果源程序文件不存在,则选择“文件”→“新建”命令,打开图1-3所示的“新建”对话框,单击“文件”标签,选中C++ Source File选项,单击“确定”按钮,新建一个源程序文件编辑窗口,然后在编辑窗口中输入源程序。

图1-2 VC++窗口
打开:如果源程序文件已经存在,则选择“文件”→“打开”命令,打开“打开”对话框,查找指定的源程序文件,单击“打开”按钮,打开一个源程序文件编辑窗口,然后在编辑窗口中编辑源程序。

图1-3 新建文件
1.2.3 保存源程序
在VC++的编辑窗口完成源程序的编辑后,可以使用“文件”→“保存”命令保存文件,如图1-4所示。注意:保存文件时,应指定源程序文件的扩展名为.c,否则系统将按C++源程序文件的扩展名.cpp来保存,例如,用test.c作为源程序文件名。也可以使用其他方式保存文件。

图1-4 保存文件
1.2.4 执行程序
首先必须经编译连接生成可执行文件,然后才能执行。选择“组建”→“组建”命令,如图1-5所示,也可按【F7】键。在编译连接过程中系统将保存修改后的程序,并生成一个同名的工作区。

图1-5 编译连接菜单
如果程序有错误,将在图1-6所示的信息窗口中显示内容:1 error(s),0 warning(s),其中:error(s)表示致命错误,warning(s)表示警告错误。警告错误不影响程序执行,但致命性错误必须纠正。纠正错误时,只需双击某行出错信息,程序窗口中会指示对应出错位置,根据信息窗口的提示逐一纠正,然后重新编译连接,直到完全正确。

图1-6 编译连接出错
如果程序没有错误,将在图1-7所示的信息窗口中显示内容:0 error(s),0 warning(s)。表示编译连接过程通过,并生成可执行文件。

图1-7 编译连接正确
程序编译连接通过后,选择“组建”→“执行”命令(或按【Ctrl+F5】组合键),执行程序。当程序运行时,系统将自动弹出图1-8所示的程序运行窗口。按任意键将关闭运行窗口。

图1-8 程序运行窗口
注意:在VC++中,对于程序的编译、连接和执行操作,系统还提供了“编译微型条”工具条,如图1-9所示。

图1-9 “编译微型条”工具条
1.2.5 关闭程序工作区
当一个程序编译连接后,VC++系统自动产生相应的工作区,以完成程序的运行和调试。若想执行第二个程序时,必须关闭前一个程序的工作区,然后通过新的编译连接,产生第二个程序的工作区。否则运行的将一直是前一个程序。
VC++提供关闭程序工作区的功能,如图1-10(a)所示,选择“文件”→“关闭工作区”命令,出现图1-10(b)所示的对话框,若单击“否”按钮,则只关闭工作区,保留源程序窗口。若单击“是”按钮将同时关闭源程序窗口。一般单击“是”按钮。

图1-10 关闭程序工作区
1.2.6 命令行参数处理
VC++是一个基于窗口操作的C++系统,没有提供命令行参数功能,需要在Windows的“MS-DOS方式”窗口中以命令方式实现。具体步骤参考如下:
①正确编译连接,生成可执行程序。
②通过“我的电脑”或“资源管理器”找到所运行的C源程序(设为test.c)。
③进入debug文件夹(它包含test.c程序的可执行文件test.exe)。
④执行“开始”→“运行”菜单,输入command,然后单击“确定”按钮。
⑤在打开的“MS-DOS方式”窗口中输入:test参数1参数2……,带参数运行程序。
1.2.7 程序调试
在学习C语言程序设计过程中,需要逐步培养调试程序的能力,掌握程序调试的基本方法和技巧。这些都不可能靠几句话讲清楚,要靠自己在上机中不断摸索总结,可以说是一种经验积累。下面对程序调试常用操作方法做简单介绍,对于其他的操作读者可以自行试验,或参考有关Visual C++手册。
1.程序执行到中途暂停以便观察阶段性结果
方法一:使程序执行到光标所在的那一行暂停。
①在需要暂停的行上单击,定位光标。例如,在图1-11中将光标定位在for语句所在行。
②选择“组建”→“开始调试”→Run to Cursor命令(或按【Ctrl+F10】组合键),程序将执行到光标所在行暂停。如果把光标移动到后面的某个位置,再按【Ctrl+F10】组合键,程序将从当前的暂停点继续执行到新的光标位置,第二次暂停。

图1-11 执行到光标所在行暂停
方法二:在需暂停的行上设置断点。
①在需设置断点的行上单击,定位光标。
②单击“编译微型条”工具条中最右面的按钮,如图1-12所示(或按【F9】键),设置或取消断点。注意:被设置了断点的行前面会出现一个红色圆点标志。

图1-12 设置断点
注意:不管是通过光标位置还是断点设置,其所在的程序行必须是程序执行的必经之路,亦即不应该是分支结构中的语句,因为该语句在程序执行中受到条件判断的限制,有可能因条件的不满足而不被执行。这时程序将一直执行到结束或下一个断点为止。
2.设置需观察的结果变量
按照上面的操作,使程序执行到指定位置时暂停,目的是为了查看有关的中间结果。在图1-13中,左下角窗口中系统自动显示了有关变量的值,其中:变量a和b的值分别是1、100,而变量i、s的值是不正确的,因为它们还未被赋值。图中左侧的箭头表示当前程序暂停的位置。如果还想增加观察变量,可在图中右下角的“名称”文本框中填入相应变量名。

图1-13 观察结果变量
3.单步执行
当程序执行到某个位置时发现结果已经不正确,说明在此之前肯定有错误存在。如果能确定一小段程序可能有错,先按上面的步骤暂停在该小段程序的头一行,再输入若干个查看变量,然后单步执行,即一次执行一行语句,逐行检查下来,看看到底是哪一行造成结果出现错误,从而确定错误语句并予以纠正。
单击“调试”工具条中的Step Over按钮或按【F10】键,如图1-14所示。如果遇到自定义函数调用,想进入函数进行单步执行,单击Step Into按钮
或按【F11】键。当想结束函数的单步执行,可单击Step Out按钮
或按【Shift+F11】组合键。对不是函数调用的语句来说,【F11】键与【F10】键的作用相同。但一般对系统函数不要使用【F11】键。

图1-14 “调试”工具条
4.断点的使用
使用断点可以使程序暂停。一旦设置了断点,不管是否还需要调试程序,每次执行程序都会在断点上暂停。因此调试结束后应取消所定义的断点。方法是先把光标定位在断点所在行,再单击“编译微型条”工具条中最右面的按钮或按【F9】键,该操作是一个开关,单击一次是设置,单击二次是取消设置。如果有多个断点想全部取消,可选择“编辑”→“断点”命令,屏幕上会显示Breakpoints对话框,如图1-15所示,窗口下方列出了所有断点,单击Remove All按钮,将取消所有断点。
断点常用于调试较长程序,以避免使用Run to Cursor或【Ctrl+F10】组合键功能时,经常要把光标定位到不同的地方。而对于长度为上百行的程序,要寻找某位置并不太方便。
如果一个程序设置了多个断点,按一次按【F5】键会暂停在第一个断点,再按一次【F5】键会继续执行到第二个断点暂停,依次执行下去。

图1-15 Breakpoints对话框
5.停止调试
选择“调试”→Stop Debugging命令(或【Shift+F5】组合键)可以结束调试,从而回到正常的运行状态。