第2章Visual C++ 2010上机指南
2.1Visual C++ 2010概述
Visual Studio是微软公司推出的目前流行的Windows平台应用程序开发环境。Visual Studio 2010同时带来了 NET Framework 4.0,除了Microsoft SQL Server,它还支持IBM DB2和Oracle数据库。Visual Studio 可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
Visual C++ 2010 是Visual Studio 2010中的一个模块,是微软公司推出的目前使用极为广泛的基于Windows平台的可视化集成开发环境(IDE)。它包含文本编辑器、资源编辑器、工程编译器、源代码浏览器、集成调试等工具以及一套联机文档。使用Visual C++ 2010,可以完成创建、调试、修改C++应用程序等各种操作。
Visual C++ 2010提供面向对象技术的支持,它能够帮助使用MFC库的用户自动生成一个具有图形界面的应用程序框架。用户只需在该框架的适当部分添加、扩充代码就可以得到一个满意的应用程序。
Visual C++ 2010也作为C语言程序的常用的应用开发环境之一,C语言是C++的子集,C++是对C语言的扩展,包含了C语言的所有内容,Visual C++ 2010只有创建C++文件的选项,没有创建C语言文件的选项。但是这并不影响使用,我们在填写源文件名称时把后缀改为.c即可,编译器会根据源文件的后缀来判断代码的种类。
如果使用Visual C++ 2010编写大型的C语言应用程序,一般采用层次文件结构,如图2-1所示。
其中.sln类型的文件在Visual C++ 2010中是级别最高的,称为解决方案(solution)文件,一般与具体的应用系统相对应。在Visual C++ 2010中,应用程序是以工程(project,也称为项目)文件的形式存在的,文件的扩展名为.vcxproj。一个解决方案文件中可以包含多个工程文件,由解决方案文件对它们进行统一协调和管理。每个工程文件中包含若干头文件和源文件。头文件(.h)包含的主要是函数、数据类型的说明和符号常量的定义等内容;源文件(.c)为实现文件,该文件包含的主要是函数的实现代码。在程序结构层面,每个工程文件由很多函数组成,但必须且只能有一个主函数main()。
2.2建立C语言应用程序
利用Visual C++ 2010提供的控制台操作方式,可以建立C语言应用程序。Win32控制台程序(Win32 Console Application)是一类Windows程序,它不使用复杂的图形用户界面,程序与用户交互是通过一个标准的正文窗口。下面我们通过编写简单的C语言应用程序,初步介绍Visual C++ 2010的使用。
2.2.1安装和启动
运行Visual Studio 2010 Express软件中的setup.hta程序,选择安装Visual C++ 2010学习版,然后按照安装程序的指导完成安装过程。
安装完成后,在“开始”菜单的“程序”子菜单中有Microsoft Visual Studio 2010项,选择其中的Microsoft Visual C++ 2010 Express即可运行(也可在Windows桌面上建立一个快捷方式,双击即可运行)。
Visual C++ 2010默认安装完成后,为了在执行程序时出现“结果窗口”,需要进行手动设置。详细操作参考2.5节。
2.2.2创建项目
用Visual C++ 2010系统建立C语言应用程序,首先要创建一个项目,用来存放C程序的所有信息。创建一个项目的操作步骤如下:
1)进入Visual C++ 2010环境后,在上方菜单栏中选择“文件 → 新建 → 项目”命令(如图2-2所示),或者按下Ctrl+Shift+N组合键。
2)屏幕上出现如图2-3所示的“新建项目”对话框后,选择“Win32”模板,选择“Win32控制台应用程序”(如果你安装的是英文版,那么对应的项目类型是“Win32 Console Application”),填写好项目名称,选择好存储位置,单击“确定”按钮。
3)屏幕上出现如图2-4所示的向导,然后单击“下一步”按钮继续。
4)屏幕上出现如图2-5所示的Win32应用程序向导2,先取消“预编译头”,再勾选“空项目”,然后单击“完成”按钮就创建了一个新的项目。
2.2.3添加C源程序文件
添加一个C源程序文件的操作步骤如下:
1)选择主菜单“文件”中的“项目→添加新项”命令,或在解决方案资源管理器的“源文件”处右击鼠标,在弹出的菜单中选择“添加 → 新建项”(或者按下Ctrl+Shift+A组合键),如图2-6所示。
2)选定“C++ 文件(cpp)”项,在“名称”栏中填入新添加的源文件名,如“hello.c”,在“位置”栏中指定文件路径,选择存放在项目文件夹内可以不必输入,单击“添加”按钮,如图2-7所示。
注意:填入C源文件名一定要加上扩展名“.c”,否则系统会为文件添加默认的C++源文件,扩展名自动变成“.cpp”,编译器会根据源文件的后缀来判断代码的种类。
3)在文件编辑区输入源程序,如图2-8所示。
2.2.4编译、连接和运行
系统提供了一种快捷的方式,可以一键完成编译、连接、运行,有三种方法:
1)单击“生成”工具栏中的“开始执行(不调试)”图标;
2)单击菜单栏中的“调试”按钮,选择“开始执行(不调试)”命令;
3)按下Ctrl+F5组合键。
系统首先进行编译过程,输出窗口将显示编译过程中检查出的错误或警告信息,在错误信息处双击鼠标左键或单击鼠标右键再选“转到”命令,可以使输入焦点跳转到引起错误的源代码处大致位置以进行修改。如图2-9所示:输出窗口中提示“error C2143: 语法错误 : 缺少‘;’”,同时在程序窗口标注出出错语句的大致位置。在“printf("hello everybody!n")”的后面加一个分号后再编译一次即可。
如果程序没有语法错误,自动开始连接和运行,此时将会出现一个新的用户窗口,按照程序输入要求正确输入数据后,程序即正确执行,用户窗口显示运行的结果。
程序编译完成后生成的目标文件(.obj)、连接后生成的可执行文件(.exe)存放在当前项目所在文件夹的“Debug”子文件夹中。编译完成后,打开项目目录(d:c language myproject-1Debug)文件夹,会看到经过编译产生的目标文件(Object File)hello.obj、最终生成的可执行文件myproject-1.exe。
2.3编辑C语言应用程序
2.3.1打开项目/解决方案
选择主菜单“文件→打开→项目/解决方案”命令,在“打开项目”对话框中找到并选择要打开的项目/解决方案文件“MyProject-1.sln”,单击“确定”按钮,打开后,在左侧的“解决方案资源管理器”窗口,打开要编辑的C源程序进行编辑和修改,如图2-10所示。
2.3.2在项目中添加已经存在的文件
首先选中项目名,然后单击鼠标右键,在弹出的快捷菜单中单击“添加 → 现有项”命令,或者单击选择主菜单“项目 → 添加现有项”命令,在“打开项目”对话框中找到已经存在的C源程序文件,单击“添加”按钮完成添加,如图2-11所示。
2.3.3在解决方案中添加新项目
首先在解决方案管理器内选择解决方案名,单击鼠标右键,在弹出的快捷菜单中单击“添加 → 新建项目”命令,在“添加新项目”对话框中选择“Win32控制台应用程序”,选择位置,填写项目名,单击“确定”按钮完成添加,如图2-12所示。
2.3.4设置启动项目
如果一个解决方案中有多个项目,只能有一个是当前活动项目,该项目当前正在编译运行,需要设置成为启动项目。方法是在解决方案管理器内选中该项目,单击鼠标右键激活快捷菜单,选择“设为启动项目”命令,如图2-13所示。
2.4调试程序
在编写较长的程序时,能够一次成功绝非易事。对于程序中的错误,系统提供了易用且有效的调试手段。调试是一个程序员最基本的技能,这里我们介绍一些初级的调试方法。
2.4.1调试程序环境介绍
- 进入调试程序环境
选择“调试”主菜单中提供的调试命令,或者在菜单区空白处单击鼠标右键,在弹出的菜单中选中“调试”项激活调试工具条,选择需要的调试命令,系统将会进入调试程序界面,同时提供多种窗口监视程序运行,如图2-14所示。 - 监视窗口
单击底部的“监视1”按钮,或把光标移动到“监视1”按钮上,下方出现一个观察窗口。
系统支持查看程序运行到当前指令语句时变量、表达式和内存的值。所有这些观察都必须在中断的情况下进行。
在该窗口中输入变量或者表达式,就可以观察变量或者表达式的值。注意:表达式不能有副作用,例如“++”和“--”运算符绝对禁止用于表达式中,因为这两个运算符将修改变量的值,导致程序的逻辑被破坏。
还可以在调试状态下单击鼠标右键,选择“快速监视”命令,弹出一个对话框,来观看变量和计算表达式的值。
- “局部变量”窗口
单击底部的“局部变量”按钮,或把光标移动到“局部变量”按钮上,下方出现一个观察窗口,显示当前窗口所有可见的变量的值,特别是当前指令语句涉及的变量值,以红色显示。 - 自动窗口
单击底部的“自动窗口”按钮,或把光标移动到“局部变量”按钮上,下方出现一个观察窗口,显示所有当前执行的上下文中可见的变量的值,特别是当前指令语句涉及的变量值,以红色显示。
2.4.2单步执行
系统提供了多种单步执行调试程序的方法:可以通过单击调试工具条上的按钮或按快捷键的方式选择多种单步执行命令。表2-1中列出了常用的调试命令。
1)单步跟踪进入子函数(逐语句,F11),每按一次F11快捷键或单击调试工具条上的按钮,程序执行一条无法再进行分解的程序行,如果涉及子函数,进入子函数内部。
2)单步跟踪跳过子函数(逐过程,F10),每按一次F10快捷键或单击调试工具条上的按钮,程序执行一行;监视窗口可以显示变量名及其当前值,在单步执行的过程中,可以在监视窗口中加入所需观察的变量,辅助进行监视,以便随时了解变量当前的情况,如果涉及子函数,不进入子函数内部。
3)单步跟踪跳出子函数(跳出,Shift+F11),按Shift+F11组合键或单击调试工具条上的按钮后,程序运行至当前函数的末尾,然后从当前子函数跳到上一级主调函数。
4)悬停鼠标查看表达式值。观看变量的值的最简单方法,是把光标移动到变量上,停留一会儿就可以看到变量的值。
2.4.3设置断点调试程序
对于较大规模程序的跟踪,断点是最常用的技巧。断点是调试器设置的一个代码位置,当程序运行到断点时,程序中断执行,回到调试器。调试时只有设置了断点并使程序回到调试器,才能对程序进行在线调试。如图2-15所示。
- 设置断点的方法
可以通过下述方法设置一个断点:首先把光标移动到需要设置断点的代码行上,然后按F9快捷键,断点处所在的程序行的左侧会出现一个红色圆点;把光标移动到需要设置断点的代码行的左边框上然后单击鼠标左键,断点处所在的程序行的左侧也会出现一个红色圆点;用右键菜单的“插入断点”命令。如图2-15和表2-1所示。
系统提供了多种类型的断点:
条件断点:可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击“条件”按钮,为断点设置一个表达式。当这个表达式的值发生改变时,程序就被中断。
数据断点:数据断点只能在“断点”对话框中设置。在编辑框中输入一个表达式,当这个表达式的值发生变化时,到达数据断点。一般情况下,这个表达式应该由运算符和全局变量构成。
- 程序运行到断点
选择主菜单“调试”中的“启动调试”或按F10快捷键,程序执行到第一个断点处后将暂停执行,该断点处所在的程序行的左侧红色圆点上会添加一个黄色箭头,此时,用户可方便地进行变量观察。继续执行该命令,程序运行到下一个相邻的断点。如图2-15所示。 - 取消断点
只需在代码处再次按F9键,或者把光标移动到需要取消断点的代码行的左边框上然后单击鼠标左键,或者打开“断点”对话框后按照界面提示去掉断点。 - 结束程序调试,返回程序编辑环境
选择主菜单“调试”中的“停止调试”命令,或者单击调试工具条上的按钮,或者按Shift+F5组合键,都可结束程序调试,返回程序编辑环境。
2.5修改用户界面设置
Visual C++ 2010默认安装完成后,为了在执行程序时出现结果窗口,需要进行如下设置:
单击菜单栏上的“视图”命令,在下拉菜单中选择“工具栏”命令,在级联菜单中选择“生成”选项。如图2-16所示。
此时将在工具栏中出现“生成”工具栏,可拖动该工具栏上的移动条改变其位置。如图2-17所示。
用鼠标指向“生成”工具栏右下角的箭头图标,出现“生成”工具栏选项的提示。单击该箭头图标,出现“添加或移除按钮”项,在级联菜单中选择“自定义”选项。如图2-18所示。
出现“自定义”对话框,在“命令”选项卡中单击“添加命令”按钮。出现“添加命令”对话框。如图2-19所示。
选择“开始执行(不调试)”命令,单击“确定”按钮,在“生成”工具栏中会出现“开始执行(不调试)”命令按钮。
在运行程序时,单击该按钮,程序执行后会出现结果窗口。
2.6有关联机帮助
Visual C++ 2010提供了详细的帮助信息,用户通过选择“帮助”菜单下的“帮助目录”命令就可以进入帮助系统。在源文件编辑器中把光标定位在一个需要查询的单词处,然后按F1键也可以进入Visual C++ 2010的帮助系统。
此外,在编程的过程中,将光标移至函数名的上面,系统会自动提供该函数的原型说明。