zoukankan      html  css  js  c++  java
  • C++开发基础

    硬件配置:
    586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于20MB,硬
    盘自由空间不少于60MB。推荐配置为内存32MB或64MB(或以上),硬盘自由空间500MB
    以上。
    软件配置:
    1、操作系统:Windows98,windows 2000,windows XP,Linux,UNIX 
    2、集成开发环境:
    (1)在Windows98,windows 2000,windows XP系统下,主要的开发编译环境有Turbo 
    C/C++ 3.0、Borland C++ 3.1、Microsoft Visual C++6.0、DJGPP,其中DJGPP是GCC在
    DOS/Windows操作系统下的移植。本实验指导书使用的开发环境为Microsoft Visual C++6.0
    英文版。汉化版本只是把部分菜单汉化了且用词很不准确。
    (2)在Linux、UNIX系统下,采用GCC编译环境。本实验指导书不涉及相关内容,
    有兴趣的同学可以自行学习。
    1.2 Visual C++ 6.0的使用
    1.2.1 Visual C++介绍
    Visual C++是Microsoft公司的Visual Studio开发工具箱中的一个C++程序开发包。Visual 
    Studio提供了一整套开发Internet 和Windows应用程序的工具,包括Visual C++,Visual 
    Basic,Visual FoxPro,Visual InterDev,Visual J++以及其他辅助工具,如代码管理工具Visual 
    SourceSafe和联机帮助系统MSDN。Visual C++包中除包括C++编译器外,还包括所有的库、
    例子和为创建Windows应用程序所需要的文档。
    从最早期的1.0版本发展6.0版本,到最新的.NET 版本,Visual C++已经有了很大的变
    化,在界面、功能、库支持方面都有许多的增强。6.0版本在编译器、MFC类库、编辑器以
    及联机帮助系统等方面都比以前的版本做了较大改进。
    Visual C++一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的
    应用开发。实验中可以使用这三个版本的任意一种。
    1.2.2 Visual C++的安装和启动
    如果你的计算机未安装Visual C++6.0,则应先安装Visual C++6.0。Visual C++是Visual 
    Studio的一部分,因此需要Visual Studio 的光盘,执行其中的setup.exe,并按屏幕上的提示
    安装即可。安转完毕后,在Windows的 “开始”  菜单的程序子菜单中会出现“Microsoft visual 
    C++程序设计实验指导书

    Studio”子菜单,如图1-1所示
    图1-1 Microsoft visual Studio 启动子菜单
    在需要使用Visual C++时,只需从桌面上顺序选择“开始”程序 “Microsoft visual Studio”
    Visual C++6.0命令即可,此时屏幕上在短暂显示VisualC++6.0的版权页面后,出现Visual 
    C++6.0的由窗口、工具条、菜单、工具及其他部分组成的一个主界面。通过这个界面,用
    户可以创建、测试、调试应用程序。如图
    图1-2 Visual C++6.0界面
    1.2.3  常用功能键及其意义
    为了使程序员能够方便快捷地完成程序开发,开发环境提供了大量快捷方式来简化一些
    常用操作的步骤。键盘操作直接、简单,而且非常方便,因而程序员非常喜欢采用键盘命令
    来控制操作。下面是一些最常用的功能键,希望在实验中逐步掌握。
    操作类型  功能键  对应菜单  含义
    文件操作  Ctrl+N File|New  创建新的文件、项目等
    Ctrl+O File|Open  打开项目、文件等
    Ctrl+S File|Save  保存当前文件
    编辑操作  Ctrl+X Edit|Cut  剪切
    Ctrl+C Edit|Copy  复制
    Ctrl+V Edit|Paste  粘贴
    Ctrl+Z Edit|Undo  撤消上一个操作
    Ctrl+Y Edit|Redo  重复上一个操作
    Ctrl+A Edit|Select All  全选
    Del Edit|Del  删除光标后面的一个字符
    建立程序操作  Ctrl+F7 Build| Compiler current file  编译当前源文件
    Ctrl+F5 Build|Run exe  运行当前项目 
    C++程序设计实验指导书

    F7 Build|Build exe  建立可执行程序
    F5 Build|Start Debugging  启动调试程序
    调试  F5 Debug|Go  继续运行
    F11 Debug|Step into  进入函数体内部
    shift+F11 Debug|Step out  从函数体内部运行出来
    F10 Debug|Step over  执行一行语句
    F9  设置/清除断点
    Ctrl+F10 Debug|Run to cursor  运行到光标所在位置
    shift+F9 Debug|QuickWatch  快速查看变量或表达式的值
    Shift + F5 Debug|Stop debugging  停止调试
    注:这些快捷键命令都有对应的菜单和工具条按钮,如图1.3:
    图1-3  快捷键命令菜单与按钮
    1.2.4  输入和编辑源程序
    先介绍最简单的情况,即程序只由一个源程序文件组成,即单文件程序(有关对多文件
    程序的操作在本章的稍后介绍)。
    1、新建一个C++源程序的方法
    如果要新建一个C++源程序,可采取以下的步骤:
    在Visual C++主窗口的主菜单栏中选择File(文件)命令,然后选择New(新建)命令,如
    图1-4。
    图1-4  选择File菜单中的New操作
    Compile 
    (Ctrl+F7)
    Rebuild All
    Build (F7) 
    StopBuild 
    (Ctrl+Break)
    Execute Program 
    (Ctrl+F5
    Go(F5
    Insert Remove
    Breakpoint(F9) 
    C++程序设计实验指导书
    4
    图1-5  创建一个C++源文件
    这时,展幕上出现一个New(新建)对话框,单击此对话框的上方的Files(文件)属
    性页,在列表中选择“C++ Source File”项,表示要建立新的C++源程序文件,然后在对话
    框右半部分的Location(目录)文本框中输入准备编辑的源程序文件的存储路径(假设为
    D: 实验一),表示将要把准备编辑的源程序文件将存放在
    张三实验一”子目录下。在其上方的File(文件)文本框中输入准备编辑的源程
    序文件的名字(输入MyFirstCpp.cpp),如图1-5。这样,即将进行输入和编辑的源程序就
    以MyFirstCpp.cpp 为文件名存放在D盘的“ 计算机 张三实验一”目录下,如
    图1-6。当然,读者完全可以指定其他路径名和文件名。
    图1-6 C++文件建立成功
    在单击OK按钮后,回到Visual C++主窗口,由于在前面已指定了路径(D:计算机
    实验一)和文件名(MyFirstCpp.cpp),因此在窗口的标题栏中显示出
    MyFirstC.cpp。可以看到光标在程序编辑窗口闪烁,表示程序编辑窗口已激活,可以输入和
    编辑源程序了。这里输入如图1-7窗口中所示的程序。检查无误后,则将源程序保存在前面
    指定的文件中,方法是:在主菜单栏中选择File(文件)命令,并在其下拉菜单中选择Save
    (保存)命令。也可以用快捷键Ctrl+S来保存文件。如果不想将源程序存放到原先指定的
    文件中,可以不选择Save命令,而选择Save As(另存为)命令,并在弹出的Save As(另
    存为)对话框中指定文件路径和文件名。
    计算机-4070105-张三 “D: 计算机
    -4070105--4070105-张三 -4070105-
    C++程序设计实验指导书
    5
    图1-7 C++程序输入
    2、打开一个已有的程序
    如果你已经编辑并保存过C++源程序,而希望打开你所需要的源程序文件,并对它进行
    修改,方法是:
    (1)在“资源管理器”或“我的电脑”中按路径打到已有的C++程序名(如C1-1.cpp)。
    (2)双击此文件名,则进入Visual C++集成环境,并打开了该文件,程序已显示在编
    辑窗口中。也可以用Ctrl+O或单击工具栏中的小图标  来打开文件。
    (3)如果修改后仍想保存在原来的文件中,可以选择File(文件)→Save(保存)命
    令,或用快捷键Ctrl+S,或单击工具栏中的小图标  来保存文件。
    3、通过已有的程序建立一个新程序的方法
    如果你已编辑并保存过C++源程序(而不是第一次在该计算机上使用Visual C++)的话,
    则可以通过一个已有的程序来建立一个新程序,这样做比重新输入一个新文件省事,因为可
    以利用原有程序的部分内容。方法是:
    (1)打开任何一个已有的源文件,(例cl-1.cpp)
    (2)利用该文件的基础修改成新的文件然后通过选择File(文件)→Save as(另存为)
    命令将它以另一文件名另存(如以test.cpp名字另存),这样就生成了一个新文件test.cpp。
    用这种方法很方便,但应注意:
    (1)保存新文件时,不要错用File→Save(保存)操作,否则原有文件(cl-1.cpp)的
    内容就被修改了。
    (2)在编译新文件前,应先选择File(文件)→Close Workspace(关闭工作区)命令
    将原有的工作区关闭,以免新文件在原有的工作区进行编译。
    1.2.5  编译、连接和运行
    1、程序的编译
    在编辑和保存了源文件以后,需要对该源文件进行编译。单击主菜单栏中的Build(编
    译),在其下拉菜单中选择Compile MyFirstC.cpp(编译MyFirstC.cpp)命令。由于建立(或
    保存)文件时已指定了源文件的名字MyFirstC.cpp,因此在Build菜单的Compile命令中显
    示了现在要编译的源文件名MyFirstC.cpp。见图1-8: 
    C++程序设计实验指导书
    6
    图1-8  编译C++程序
    在选择“编译”命令后,屏幕上出现一个对话框,内容是“This build command repuires 
    an active project workspace.Would you like to creat a default project workspace?”(此编译命令要
    求一个有效的项目工作区。你是否同意建立一个默认的项目工作区),见图1-9。单击Yes
    (是)按钮,表示同意由系统建立默认的项目工作区,然后开始编译。也可以不用选择菜单
    的方法,而用Ctrl+F7或小图标  来完成编译。
    图1-9  建立默认工作区提示
    在进行编译时,编译系统检查源程序中有无语法错误,然后在主窗口下部的调试信息窗
    口输出编译的信息,如果有错,就会指出错误的位置和性质,见图1-10。 
    C++程序设计实验指导书
    7
    图1-10  编译错误信息提示
    2、程序的调试
    程序调试的任务是发现和改正程序中的错误,使程序能正常运行。编译系统能检查出程
    序中的语法错误。语法错误分两类:一类是致命错误,以error表示,如果程序中有这类错
    误,就通不过编译,无法形成目标程序,更谈不上运行了。另一类是轻微错误,以warning
    (警告)表示,这类错误不影响生成目标程序和可执行程序,但有可能影响运行的结果。因
    此也应当尽量改正,使程序既无error,又无warning。
    在图1-10中的调试信息窗口中可以看到编译的信息,指出源程序有一个error 和一个
    warning。第7行有致命错误,错误的种类是:在“}”之前漏了“;”。检查图1-10中的程
    序,果然发现在第6行末漏了分号。同学们可能要问:明明是第6行有错,怎么在报错时说
    成是第7行的错呢?这是因为C++允许将一个语句分写成几行,因此检查完第6行末尾无分
    号时还不能判定该语句有错,必须再检查下一行,直到发现第7行的“}”前都没有“;”,
    才能判定出错。因此在第7行报错。在根据编译报错信息检查程序时,应检查其上下行。此
    外编译信息指出第7行还有一个warning,指出main函数需要有一个返回值,程序中缺少一
    个“return 0;”语句。
    进行改错时,双击调试信息窗口中的某个报错信息的第1行,光标就自动移到程序窗口
    中被报错的程序行,并用粗箭头指向该行。见图1-11。
    C++程序设计实验指导书
    8
    图1-11  发现错误位置
    在第6行末加上分号。再增加新的一行return 0; 如图1-12:
    图1-12  错误修改
    再选择Compile MyFirstC.cpp命令重新编译,此时编译信息提示:“0 error(s),0 
    warning(s)”,即没有致使错误(error)和警告性错误(warning),编译成功,这时产生一个
    MyFirstC.obj文件。见图1-13中的下部调试信息窗口。
    C++程序设计实验指导书
    9
    图1-13  语法编译通过
    3、程序的连接
    在得到目标程序后,就可以对程序进行连接了。此时应选择Build(构建)→Build 
    MyFirstCpp.exe(构建 )命令,见图1-14。表示要求连接并建立一个可执行文件

    图1-14  连接建立可执行文件
    在执行连接后,在调试输出窗口显示连接时的信息,说明没有发现错误,生成了一个可
    执行文件 。见图1-15。
    MyFirstCpp.exe
    MyFirstCpp.exe
    MyFirstCpp.exe
    C++程序设计实验指导书
    10
    图1-15  可执行文件建立成功
    以上介绍的是分别进行程序的编译与连接,也可以选择Build→命令(或按F7键)一次
    完成编译与连接。对于初学者来说,还是建议分步进行程序的编译与连接,有利于对程序编
    译、解释、连接过程的理解。今后积累一定经验后,可以一步完成编译与连接。
    4、程序的执行
    在得到可执行文件 后,就可以直接执行 了。选择Build
    → (执行 )命令。见图1-16。
    图1-16  运行程序可执行文件
    在选择 命令后,即开始执行 。也可以不通过选择菜
    单命令,而且Ctrl+F5来实现程序的执行。程序执行后,屏幕切换到输出结果的窗口,显示
    出运行结果,见图1-17。
    MyFirstCpp.exe MyFirstCpp.exe
    !Execute MyFirstCpp.exe MyFirstCpp.exe
    "!Execute MyFirstCpp.exe" MyFirstCpp.exe
    C++程序设计实验指导书
    11
    图1-17  程序运行结果
    可以看到,在输出结果的窗口中的第1行是程序的输出结果:
    This is a C++ program. 
    第2行“Press any key to continue”并非程序所指定的输出,而是Visual C++在输出完运
    行结果后由Visual V++6.0系统自动加上的一行信息,通知用户“按任何一键以便继续”。当
    你按下任何一键后,输出窗口消失,回到Visual C++的主窗口,你可以继续对源程序进行修
    改补充或进行其他工作。
    如果已完成对一个程序的操作,不再对它进行其他处理,应当选择File(文件)→Close 
    Workspace(关闭窗口)命令,以结束对该程序的操作。
    1.2.6  建立和运行包含多个文件的程序的方法
    上面介绍的是最简单的情况,一个程序只包含一个源程序文件。如果一个程序包含多个
    源程序文件,则需要建立一个项目文件(project file),在这个项目文件中包含多个文件(包
    括源文件和头文件)。项目文件是放在项目工作区(Workspace)中并在项目工作区的管理之
    下工作的,因此需要建立项目工作区,一个项目工作区可以包含一个以上的项目。在编译时,
    先分别对每个文件进行编译,然后将项目文件中的文件连接成为一个整体,再与系统的有关
    资源连接,生成一个可执行文件,最后执行这个文件。
    在实际操作时有两种方法:一种是由用户建立项目工作区和项目文件;另一种是用户只
    建立项目文件而不建立项目工作区,由系统自动建立项目工作区。
    1、由用户建立项目工作区和项目文件
    (1)、先用前面介绍过的方法分别编辑好同一程序中的各个源程序文件,并存放在自己
    指定的目录下,例如有一个程序包括filel.cpp和file2.cpp两个源文件,并已把它们保存在“D:
    计算机-4070105-张三实验一”子目录下。
    (2)、建立一个项目工作区。在如图1-4所示的Visual C++主窗口中选择File(文件)
    →New(新建)命令,在弹出的New(新建)对话框中选择上部的选择属性页Workspace name
    (工作区名字),表示要建立一个新的项目工作区。在对话框中右部Workspace name(工作
    区名字)文本框中输入你指定的工作区的名字(如wsl),见图1-18。 
    C++程序设计实验指导书
    12
    图1-18  建立工作区
    然后单击右下部的OK按钮。此时返回Visual C++主窗口,见图1-19。
    图1-19  一个空的工作区
    可以看到在左部的工作区窗口中显示了“Workspace ws1:0 project(s)”,表示当前的工作
    区名是wsl,其中有0个project(没有在其中放入项目文件)。
    (3)、建立项目文件。选择File(文件)→New(新建)命令,在弹出的New(新建)
    对话框中选择上部的选择属性页Projects(项目,中文Visual C++把它译为“工程”),表示
    要建立一个项目文件。见图1-20。
    C++程序设计实验指导书
    13
    图1-20  建立一个新的项目
    在对话框中左部的列表中选择“Win32 Console Application”项,并在右部的location(位
    置)文本框中输入项目文件的位置(即文件路径),在Project name(中文界面中显示为“工
    程”)文本框中输入你指定的项目文件名,假设输入projectl。在窗口右部选中Add to current 
    workspace(添加至现有工作区)单选钮,表示新建的项目文件是放到刚才建立的当前工作
    区中的。然后单击OK(确定)按钮。此时弹出一个如图1-21所示的对话框,在其中选中
    An empty project单选钮,表示新建立的是一个空的项目。
    图1-21  项目类型选择
    单击Finish(完成)按钮。系统弹出一个New Project Information(新建工程信息)对话
    框(图1-22),显示了刚才建立的项目的有关信息。
    图1-22  新建项目的信息
    在其下方可以看到项目文件的位置(文件路径)。确认后单击OK(确定)按钮。此时
    又回到Visual C++主窗口,可以看到:左部窗口中显示了“Workspace’wsl’:1project(s)”
    其下一行为“project1 files”,表示已将项目文件project1加到项目工作区wsl中,见图1-23。 
    C++程序设计实验指导书
    14
    图1-23  工作区中加入一个新项目
    (4)、将源程序文件放到项目文件中。方法是:在Visual C++主窗口中依次选择Project
    (工程)→Add To Project(添加到项目中,在中文界上显示为“添加工程”)→“Files…”
    命令,见图1-24。
    图1-24  文件加入到项目中
    在选择“Files…”命令后,屏幕上出现Insert Files into Project对话框。在上部的列表框
    中按路径找到源文件file1.cpp和file2.cpp所在的子目录,并选中file1.cpp和file2.cpp,见图
    1-25。 
    C++程序设计实验指导书
    15 
    图1-25  加入文件选择
    单击OK(确定)按钮,就把这两个文件添加到项目文件project1中了。
    (5)、编译和连接项目文件。由于已经把file1.cpp和file2.cpp两个文件添加到项目文件
    project1中,因此只须对项目文件project1进行统一的编译和连接。方法是:在Visua1 C++
    主窗口中选择Build(编译)→Build project1.exe(构建project1.exe)命令。
    在选择Build project1.exe命令后,系统对整个项目文件进行编译和连接,在窗口的下部
    会显示编译和连接的信息。如果程序有错,会显示出错信息,如果无错,会生成可执行文件
    project1.exe。见图1-26。
    图1-26  项目的编译和连接
    执行可执行文件。选择Build(编译)→Execute project1.exe(执行project1.exe)命令,
    即可。
    2、用户只建立项目文件
    上面介绍的方法是先建立项目工作区,再建立项目文件,步骤比较多。可以采取简化的
    方法,即用户只建立项目文件,而不建立项目工作区,由系统自动建立项目工作区。
    在本方法中,保留上一节中介绍的第(1)、(4)、(5)、(6)步,取消第(2)步,修改
    第(3)步。具体步聚如下:
    (1)分别编辑好同一程序中的各个源程序文件。同上一节中的第(1)步。
    (2)建立一个项目文件(不必先建立项目工作区)。
    在Visual C++主窗口中选择File(文件)→New(新建)命令,在弹出的New(新建)
    对话框中选择上部的选项卡projects(项目),表示要建立一个项目文件。见图1-27。在对话
    框中左部的列表中选择“Win32 Console Application”项,在project name(中文Visual C++
    C++程序设计实验指导书
    16
    中显示为“工程”)文本框中输入你指定的项目文件名(project1)。可以看到:在右部的中
    间的单选钮处默认选定了Create new workspace(创建新工作区),这是由于用户未指定工作
    区,系统会自动开辟新工作区。
    图1-27  建立一个新的Win32 Console Application项目
    单击OK(确定)按钮,出现“Win32 Console Application-step 1 of 1”对话框,选中右
    部的An empty project单选钮,单击Finish(完成)按钮后,出现“New project information”
    (新建工程信息)消息框。从它的下部可以看到项目文件的路径。单击OK(确定)按钮,
    在弹出的Visual C++主窗口的左部窗口的下方单击File View 按钮,窗口中显示
    “Workspace`project1`:1 project(s)”,见图1-28。说明系统已自动建立了一个工作区,由于
    用户未指定工作区名,系统就将项目文件名project1同时作为工作区名。
    图1-28  建立新项目成功
    向此项目文件添加内容。步骤与方法一中的第(4)步相同。
    编译和连接项目文件。步骤与方法一中的第(4)步相同。
    执行可执行文件。步骤与方法一中的第(6)步相同。
    显然,这种方法比前一种方法简单一些。在介绍单文件程序时,为了尽量简化手续,这
    里没有建立工作区,也没有建立项目文件,而是直接建立源文件,实际上,在编译每一个程
    序时都需要一个工作区,如果用户未指定,系统会自动建立工作区,并赋予它一个默认名(此
    时以文件名作为工作区名
    C++程序设计实验指导书
    17
    1.3 Visual C++ 6.0工程相关文件介绍
    序号  文件名  描述
    1 *.dsw VC工作区文件
    2 *.dsp (Developer Studio Project)项目文件,文本格式。不熟悉的话不要手工修改
    3 *.ncb 
    无编译浏览文件。当自动完成功能出问题时,可以删除此文件,编译工
    程后会自动生成。
    4 *.opt  工程关于开发环境的参数文件,如VC工具条位置信息等。
    5 *.h C/C++程序头文件,可用文本编辑器打开
    6 *.cpp C++源程序文件,可用文本编辑器打开
    7 *.exe  程序可执行文件
    8 *.plg 
    编译信息文件。编译时的error和warning信息文件(实际上是一个html
    文件),一般用处不大。在ToolsÆOptionsÆBuild里面的选项可以控制这
    个文件的生成。
    9 *.pch (Pre-Compiled File)是预编译文件。可以加快编译速度,但是文件非常大
    10 *.pdb 
    (Program Database)记录了程序有关的一些数据和调试信息,在调试的时
    候有用
    11 *. obj  源程序文件的目标文件,编译后生成
    12 *. ilk  源程序文件的连接文件,连接后生成

    在VC下建立一个工程后,会自动产生1~4类型的文件。加入*.h、
    *.cpp文件编译后产生7~12类型的文件。其中8~12类型的文件位于工程
    目录下的Debug目录下。
    1-4类型的文件都是工程相关的文件,一般不要删除,因为删除后,
    必须手动的重新建立工程(1.2.6 详细描述了如何建立一个工程)。对于大
    型项目来说,删除这些文件的后果很严重。
    5~6类型的文件还有什么可说的,不仅不能删除这些文件,还要备份
    这些文件。失去这些文件是灾难性的。
    7~12类型的所有文件都是可以删除的,因为再次编译连接运行程序
    时,会再次自动生成这些文件。
    1.4 Visual C++ 6.0错误信息
    1.4.1  程序错误的类型
    1、严重错误(fatal error) 
    很少出现,通常是内部编译器出错。造成编译立即停止。
    2、语法错误(error) 
    语法错误是指源程序中存在不符合C/C++语言语法规定的语句,例如将int写成Int,括
    号不匹配等。这些错误不改正是不能通过编译的。如图1-29 
    C++程序设计实验指导书
    18
    图1-29  语法错误
    3、警告错误(warning) 
    对于一些在语法上有轻微毛病但不影响程序运行的错误(如定义了变量但始终未使用),
    编译时会发出警告信息,虽然程序能通过编译、连接、运行,但警告类的错误常常带来程序
    非法操作、运行错误等问题。所以,尽量改正警告错误。如图1-30 
    图1-30  警告错误
    4、连接错误(Link error)
    程序语法上没有问题,但是在连接时出现错误。这类问题常常是因为程序依赖函数、库
    不匹配造成的。如图1-31 
    图1-31  连接错误
    5、逻辑错误
    逻辑错误是指程序无语法错误,也能正常运行,但结果不对。这类错误常常是设计算法
    时的错误,计算机无法检查出来。逻辑错误是最难改正的错误之一,引起错误的原因往往可
    能很不起眼,比如就是一个变量没有初始化等,所以改正这类错误常常需要投入大量的精力。
    6、运行错误
    有时程序既无语法和逻辑错误,但是程序就是不能正常运行。多数情况下是输入数据和
    程序要求的数据不匹配造成的,也可能是系统的支持问题。
    在C++中,语法、连接错误相对较为容易改正。而逻辑错误是最隐蔽的错误,比较难以
    改正。运行错误则主要是在程序强壮性、兼容性上可能存在问题,可以通过提高程序的适应
    能力来修正。而最容易让程序开发人员忽略的就是警告错误了,因为警告错误不一定会影响
    程序的运行,但是正是这种不确定性也传递给了程序的执行,你不知道程序什么时候会出问
    题,也许永远不会有问题,也许问题马上出现,也许问题n年后出现,谁知道。所以,一定
    要重视警告错误。
    表1-1是C++错误的前缀描述,在遇到错误时可以根据其前缀就知道错误等级了。
    错误等级  错误前缀  错误编号范围  示例
    严重错误C1 001~999 
    编译错误C2 001~999 
    C2065: The specified identifier was not 
    declared.(标识符,比如一个变量,未申明)。
    如图1-29,coutt没有申明过。 
    C++程序设计实验指导书
    19
    警告错误C4 001~999 
    C4101: 'main' : unreferenced local variable
    (局部变量申明后从未使用过)。如图1-30,
    其中的i变量从未使用过。
    链接错误LNK 1000~6026 
    LNK2001: unresolved external symbol 
    "symbol". (连接指定的函数或库异常)。如
    图1-31,程序找不到main函数。
    1.4.2  错误信息的查询
    只有详细地了解了错误的原因,才能正确地改正错误。Microsoft的MSDN Library
    (Microsoft开发帮助文档库,如图1-32)提供了查询错误信息的功能。对于遇到的不明白
    的错误,同学们应该学习使用MSDN帮助文档库进行错误信息查询,获得错误信息的解释
    和可能的改正方法。具体方法如下:
    (1)选择MSDN Library(如图1-32)的索引属性页,在“键入要查找的关键字:”中
    输入错误号(由错误前缀和编号组成),比如输入C2065,如图1-33所示。
    图1-32 MSDN Library 
    (2)、在索引列表框中双击选择匹配的错误后,错误类型、可能原因、改正方法等信息
    则显示在窗口的右边部分。如图1-33所示: 
    C++程序设计实验指导书
    20
    图1-33  在MSDN Library中查找错误信息
    1.5 Visual C++ 6.0调试工具使用
    在开发程序的过程中,需要不断地调试自己的程序,或检查错误,或测试程序的稳定性,
    这就需要借助调试工具来进行。选择一个好的调试工具并能够熟练地使用它,将会使程序开
    发变得更加容易,从而大大提高程序开发的效率。
    目前有许多调试工具,集成在Visual C++中的调试工具便具有相当强大的功能。
    1.5.1  设置工程的调试属性
    在Visual C++中建立一个工程(Project)时,Visual C++都会自动创建一个Debug目录,
    在该目录下存放在开发过程进行调试时生成的文件以及生成的可执行文件(不同类型文件的
    解释见1.3节Visual C++ 6.0工程相关文件介绍),不妨将此时生成的可执行文件称为Debug 
    版本。在Debug 版本当中,包含着Microsoft格式的调试信息,而且不进行任何代码优化。
    一般情况下,在程序的开发过程中使用Debug模式。
    在应用程序开发完成之后,要将程序发行时,需要编译形成另一种版本的可执行文件,
    称为Release版本,在Release版本中对可执行程序的二进制代码进行了优化,其中不包含
    任何的调试信息。要建立Release版本的可执行文件,可以选择菜单Project中的Setting命
    令,这时屏幕上面弹出Project Settings对话框,如图1-34所示。在Settings For下拉列表中
    选择Release,按OK按钮退出。
    如果要在Visual C++中调试程序,则工程的应设为Debug版本。一般Visual C++建立一
    个工程(Project)时,默认采用Debug版本。 
    C++程序设计实验指导书
    21
    图1-34 设置工程的调试属性
    1.5.2  学习设置断点进行单步调试
    通常,一个应用程序是连续运行的,但是在程序调试的过程中,往往需要在程序的运行
    过程的某一阶段来观测应用程序的状态,所以必须使程序在某一地点停下来。在Visual C++
    中,可以通过设置断点来达到这样的目的。在设置好断点之后,当程序运行到设立断点处时
    就停止运行,此时就可以利用各种工具来观察程序的状态,也可以设置各种条件使程序按要
    求继续运行,这样就可以进一步观测程序的流向。
    在Visual C++中,可以设置多种类型的断点,这些断点起作用的方式各不相同,可以将
    它们分为三类,即:位置断点、逻辑断点以及与Windows消息有关的断点。下面我们只介
    绍简单位置断点的设置方法,其它高级断点的设置可以在今后进一步学习中掌握。
    1、设置位置断点
    位置断点,这是一类最简单的断点类型,其设置方法也最为简单,只要把光标移到要设
    断点的位置(当然这一行必须包含一条有效语句);然后按工具条上的add/remove breakpoint 
    按钮或按快捷键F9;如图1-35:
    图1-35  设置断点按钮
    这时将会在屏幕上看到在这一行的左边出现一个红色的圆点,表示在该位置设立了一个
    断点,如图1-36所示。如果你想取消断点,将光标移动到设置断点的代码行,按F9。
    C++程序设计实验指导书
    22
    图1-36  设置一个断点
    2、启动调试
    按F5或者在Build菜单中,选择Start Debug然后选择Go,就可以启动调试程序。程序
    会一直运行到需要用户输入或者有断点的代码处。如图1-37处的小黄箭头,表明程序运行
    到该处停止下来,等待下一步调试命令。
    图1-37  启动调试
    3、查看变量值
    查看变量值有多种方式,你可以选择你喜欢的方式进行。
    (1)你可以将鼠标移动到程序的变量名处,系统会自动为你显示变量的值; 
    C++程序设计实验指导书
    23
    (2)复杂变量(如对象)可以通过QuickWatch查看,方法是:将光标定位到所要查看值
    的变量处,按鼠标右键,选择QuickWatch菜单,就可以看到变量值。
    (3)启动调试程序后,屏幕下方将会出现两个输出窗口,一个是Watch,另一个是Variable。
    Watch窗口显示变量名和变量值,你可以在Watch窗口中加上你想观察值的变量名,也可以
    直接从源代码中选择变量名,并把它拖动到Watch窗口中。Variable窗口显示程序当前运行
    上下文涉及的变量的值。  如图1-38:
    图1-38  查看变量数据
    4、控制程序执行
    你可以控制程序单步执行(F10)、跟踪到一个函数内部(F11)、从一个函数运行出来
    (shift+F11)、运行到光标所在位置(Ctrl+F10),以便方便地调试程序。这些命令用于在某
    个局部范围详细地调试程序。你也可以通过设置断点(F9)然后用直接运行(GO或者F5)
    来控制程序直接运行到断点位置。如果你设置了多个断点,程序将会在遇到的第一个断点处
    停下来。要从断点处继续运行,可以用上面所说的各种命令(F5,F10,F11,Shift+F11,
    Ctrl+F10)。
    图1-39  调试控制工具条
    5、结束调试
    要结束调试,可以按shift+F5或者选择菜单Debug|Stop Debugging。当结束调试后,所
    有调试窗口会自动关闭,Debug菜单也会自动还原为Build菜单。
  • 相关阅读:
    vim配置----YouCompleteMe配置
    Linux之configure make make install
    zookeeper原理与实践(一)----zookeeper的基本功能
    RPC原理与实践(二)----Thrift分层模型
    RPC原理与实践(一)----RPC原理与实现(Thrift版)
    mysql由浅入深探究(四)----mysql事务详解
    mysql由浅入深探究(三)----mysql增删改查
    mysql由浅入深探究(二)----mysql用户操作
    Django
    7.1
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299063.html
Copyright © 2011-2022 走看看