C语言程序设计教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 C语言程序的运行与调试

1.5.1 程序编码与运行

C语言源程序需要经过编译、连接等一系列步骤才能生成真正可运行程序。如果发现程序设计有错误的话,还需要进行反复地修改和测试。从编辑到运行C程序的一段过程如图1-7所示。

图1-7 C语言设计过程

(1)编辑

编辑(edit)是指将已经编写好的源程序录入计算机并生成磁盘文件的过程。在编辑过程中所使用的软件,称为编辑器。通过编辑操作所生成的文本文件,称为源程序。

C语言源程序是一个以ASCII码形式存放的文本文件。这个文件一般会以“.c”作为扩展名。我们可以使用任何一种文本编辑器来打开和修改这个文件,但是,这个文件并不能在计算机上直接运行。要得到一个能够在计算机上直接运行的可执行文件,还必须对源程序进行编译和连接。

(2)编译

编译(compile)是指将已经编辑好的源程序翻译成二进制目标代码的过程。用以实现编译功能的程序就称为编译器。

在编译过程中,系统会首先对源程序进入预处理,然后进行编译处理。在编译时,编译器会对源程序中的语句进行词法分析和语法检查。如果发现错误,就会将这些错误按照性质和严重程序划分为“警告错误(warning)”和“致命错误(error)”两大类并显示在屏幕上。此时,用户需要根据错误信息提示,重新调用编辑器来修改源程序,然后重新编译,直到排除错误为止。如果在编译过程中没有发现错误,则会自动生成一个以“.obj”为扩展名的二进制代码文件,也称目标文件。

需要说明的是,源程序在经过编译以后所生成的目标文件虽然已经是二进制形式的目标代码了,但是它仍然不是一个可执行的程序。因为这些目标代码本身只是一些功能单一的指令块,它们还需要与其他目标代码及各种库代码相连接(link)后,才能成为可以在特定系统下运行的可执行程序。

(3)连接

连接(link)是指把当前目标代码和其他编译生成的目标代码(如果有的话),以及系统提供的标准库函数连接在一起,以生成可直接运行的可执行文件的过程。实现连接功能的程序就称为连接器。在连接过程中所生成的可执行文件一般以“.exe”为扩展名,因此又称为EXE文件。

(4)运行

C语言源程序在经过编译和连接后就会生成一个能在特定操作系统下运行的可执行文件。但需要强调的是,即使是在生成可执行文件之后,程序的开发工作也还没有结束。这是因为在编译和连接的过程中只是检查了程序的语法错误和语义错误,而在程序中可能还存在其他一些逻辑错误,例如,计算结果不正确、数据越界、用0作除数等。因此,在生成可执行程序后,还需要运行(run)程序,并对程序运行的结果进行验证和分析。如果运行结果正确,则程序开发完成;否则,应重复以上“编辑→编译→连接→运行”的过程,直到取得预期结果为止。

随着技术的发展,现在的C语言系统几乎都会将程序开发过程中需要用到的编辑、编译、连接、运行和程序动态调试等软件集中起来作为一个整体提供给用户,以方便使用。这就是所谓的集成开发环境。在教学中最常用的C语言编译系统主要包括Turbo2.0和Visual C++6.0这两大类。其中,Turbo2.0系统中主要用于DOS环境,Visual C++6.0用于Windows环境。

1.5.2 Visual C++ 6.0集成环境简介

C++是在C语言基础上,通过增加面向对象功能而发展起来的一种面向对象的程序设计语言。也就是说,C++实际上是C语言的一个超集。标准的C语言程序几乎不加修改就可以在C++系统中直接编译和运行。而Visual C++ 6.0则是微软公司开发的一种基于Windows的C++集成开发环境。由于Visual C++ 6.0工作于Windows平台之上,并且具有操作直观、方便、运行高效等优点,因此也是学习C语言程序设计的一个极佳平台。

下面,我们就以本章中的“例1-1”为例来简要介绍一下,如何利用Visual C++ 6.0集成环境中进行C语言程序开发。

(1)启动Visual C++ 6.0

首先,在Windows窗口中单击“开始”按钮,并选择“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”命令,即可启动Visual C++ 6.0。正常启动后的Visual C++ 6.0操作界面如图1-8所示。

图1-8 Visual C++ 6.0界面

(2)新建或打开C程序文件

在选择“文件(File)”菜单中的“新建(New)”命令后,弹出“新建文件”文件对话框,如图1-9所示。

图1-9 “新建文件”对话框

单击对话框中的“文件(File)”标签选中“文件”选项卡,然后在其左侧的文件类型框中指定所要建立的文件类型为“C++ Source File”(即C++源文件),同时在右侧的文件名框(File)中输入新建文件的文件名(例如,在本例中命名为“EX01-01”)。如有必要,还可在下面的路径框(Location)中指定源文件的保存目录,最后单击“确定(OK)”按钮,即可在Visual C++ 6.0集成开发环境中新建一个名为“EX01-01.cpp”的源文件。

当然,如果是要打开一个已经存在的源文件,则可直接选择“文件(File)”菜单中的“打开(Open)”命令,然后选择需要打开的文件即可。

(3)编辑和保存C程序文件

在新建(或打开)文件后,即可进入Visual C++ 6.0编辑界面,如图1-10所示。

图1-10 Visual C++ 6.0编辑界面

其中,Visual C++ 6.0界面右边中间那个最大的空白区域就是编辑窗口。用户可在其中输入源程序代码并利用键盘、鼠标、菜单等编辑功能进行编辑操作(其方法与Word类似,在此不再详述)。

在完成源程序录入和编辑操作后,用户可选择“文件(File)”→“保存(Save)”命令将当前文件保存在磁盘上,以便今后使用。

需要说明的是,由于Visual C++ 6.0实际上是一个C++编译环境,因此,系统默认的源文件扩展名为“.cpp”(即C++源程序)。如果用户需要将源程序扩展名指定为“.c”,则需要选择“文件(File)”→“另存为(Save As)”命令,并在弹出的“另存为”对话框(如图1-11所示)中将文件扩展名强制指定为“.c”。

图1-11 “另存为”对话框

(4)编译、连接和运行

①编译 选择“建立(Build)”菜单中的“Compile”命令(或直接使用快捷键“Ctrl+F7”),则系统自动创建一个工作区并开始编译操作,如图1-12所示。

图1-12 程序编译

如果在编译过程中没有发现错误,则系统提示“0 error(s), 0 warning(s)”(如图1-12所示)。反之,如果在编译的过程中发现错误,则在下面的信息框中指出错误的类型和位置。如图1-13所示。此时,需要用户重新返回编辑状态修改并重新编译程序,直到消除错误为止。

图1-13 编译错误信息提示

②连接 完成编译后,继续选择“建立(Build)”菜单中的“Build”命令,则系统自动完成连接操作,如图1-14所示。

图1-14 程序连接

③运行 最后,继续选择“建立(Build)”菜单中的“Execute”命令(如图1-15所示),则系统自动执行编译、连接后生成的可执行程序,并弹出执行窗口,如图1-16所示。

图1-15 程序运行

图1-16 程序运行的结果

(5)工作区管理

在Visual C++ 6.0集成开发环境中,系统会为每个项目建立一个相互独立的工作区,以完成相关开发和调试。因此,当用户想要开始调试下一个程序的时候,一定要首先选择“文件(File)”→“关闭工作区(Close Workspace)”命令来关闭当前程序所用工作区,否则,通过“新建”方式所新建的源文件将与原来的程序工作在同一工作区,从而产生错误。

以上是关于Visual C++ 6.0集成开发环境的一个极其简要的介绍。有关Visual C++ 6.0集成开发环境的更详细介绍,请参阅实验指导书及其他参考资料。