《21天学通C语言(第6版•修订版)》一1.4 程序开发周期

本节书摘来自异步社区《21天学通C语言(第6版•修订版)》一书中的第1章,第1.4节,作者 【美】Bradley L. Jones , Peter Aitken,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 程序开发周期

21天学通C语言(第6版•修订版)
程序开发周期有其自己的步骤。第1步是使用编辑器创建一个包含源代码的磁盘文件;第2步是编译源代码以创建目标文件;第3步是链接编译后的代码,创建一个可执行文件;第4步是运行程序,看其运行方式是否与规划相符。

1.4.1 创建源代码

源代码是一系列的语句或命令,用于指示计算机执行您期望的任务。正如前面指出的,程序开发周期的第1步是在编辑器中输入源代码。例如,下面是一行C语言源代码:

printf("Hello, Mom!");

上述语句命令计算机将消息“Hello, Mom!”显示到屏幕上(现在,不要关心该语句是如何工作的)。

使用编辑器

大多数编译器都自带了编辑器,可用来输入源代码,然而有些编译器没有。请查看编译器的用户手册,确定它是否自带了编辑器。如果没有,可使用其他编辑器。

大多数计算机系统都包含了一个可用作编辑器的程序。如果您的操作系统为Linux或UNIX,则可以使用诸如ed、ex、edit、emacs或vi等编辑器;如果您使用的是Microsoft Windows,则可以使用NotePad或WordPad;如果您的操作系统是MS/DOS 5.0或更高的版本,则可以使用Edit;如果您使用的是5.0之前的DOS版本,可使用Edlin;如果您使用的是PC/DOS 6.0或更高的版本,则可以使用E;如果您使用的是OS/2,则可以使用编辑器E和EPM。

大多数字处理器都使用特殊的编码来格式化其文档,其他程序无法正确地读取这些编码。美国信息交换标准码(ASCII)指定了一种几乎任何程序(包括C语言)都能够使用的标准文本格式。很多字处理器(如WordPerfect、Microsoft Word、WordPad和WordStar)都能够以ASCII格式(以文本文件而不是文档文件)存储源代码文件。要将字处理器文件存储为ASCII文件,请在保存文件时选择“ASCII”或“文本”选项。

如果您不想使用上述任何编辑器,可以购买其他的编辑器。市面上有专门为输入源代码而设计的软件包(包括商用的和共享软件)。


4ed7d5f75e102a06d60768ebdc44f49b631ac9e3

要寻找其他的编辑器,可以查看本地的计算机商店或计算机邮购目录,另一种方法是查看计算机编程杂志中的广告。本书附录G中介绍的Bloodshed Dev-C++也自带了编辑器。有关该程序的更详细的信息,请查阅附录G。
保存源代码文件时,必须给它取名。文件名应指出程序的功能。另外,保存C语言程序的源代码文件时,还应使用扩展名.c。虽然可以给源代码文件取任何名称和扩展名,但.c是公认的扩展名。

1.4.2 编译源代码

虽然您能够(至少在阅读完本书后能够)理解C语言源代码,但计算机不能。计算机只能识别或被称为机器语言的二进制指令。必须将源代码转换为机器语言,C语言程序才能在计算机上运行。这种转换工作(程序开发的第2步)是由名为编译器的程序完成的。编译器将源代码文件作为输入,并生成一个磁盘文件,该文件中包含了与源代码语句对应的机器语言指令。编译器创建的机器语言指令被称为目标代码,而包含它们的磁盘文件称为目标文件。


80b60a1bb6f7bd1ca7b6378be91f50ed66ddc7fc

本书是按照ANSI标准C编写的,因此读者使用何种C语言编译器无关紧要,只要它遵循ANSI标准即可。并非所有的编译器都支持该标准。当前的C语言标准名为ISO/IEC 9899:1999。本书提到该标准时,将不使用这个复杂的名称,而是使用C-99。
每种编译器都有用于创建目标代码的命令。编译时,通常使用该命令来运行编译器,后面加上源代码文件的名称。下面是使用各种DOS/Windows编译器来编译源代码文件radius.c时,应执行的命令:

Microsoft C:cl radius.c;
Borland’s Turbo C:tcc radius.c;
Borland C:bcc radius.c。
要在UNIX机器上编译radius.c,请使用下面的命令:

cc radius.c

在使用GCC编译器的机器上,请执行下面的命令:

gcc radius.c

如果您使用的是GNU C/C++编译器,也应执行gcc命令。有关使用何种命令来运行编译器,请查看编译器的用户手册。

如果您使用的是图形集成开发环境,则编译更简单。在大多数图形环境中,可以通过选择“编译”图标或菜单选项来编译程序清单。编译代码后,便可以选择“运行”图标或相应的菜单选项来执行该程序。有关编译和运行程序的细节,请查看编译器的用户手册。本书附录G中介绍的Bloodshed Dev-C++便是一个图形开发环境,可用于Microsoft Windows环境中。有的图形开发环境有几乎可以用于任何平台。

编译后,便获得了一个目标文件。如果您查看编译目录或文件夹中的文件列表,将看到一个名称同源代码文件相同、但扩展名为.obj(而不是.c)的文件。扩展名为.obj的文件是目标文件,供链接程序使用。在Linux或UNIX系统中,编译器创建的目标文件的扩展名为.o,而不是.obj。

1.4.3 链接以创建可执行文件

运行程序前,还需要完成另一个步骤。ANSI C语言定义中包含一个函数库,其中包含预定义的函数的目标代码(已经编译过的代码)。预定义的函数包含编写好的C代码,由编译器软件包以可以直接使用的方式提供。

前面的范例中使用的printf( )函数便是一个库函数。这些库函数执行经常需要完成的任务,如在屏幕上显示信息以及读取磁盘文件中的数据等。如果您的程序使用了这样的函数(几乎所有的程序都需要使用这样的函数),则必须将编译源代码时生成的目标文件和函数库中的目标代码组合起来,生成最终的可执行程序(可执行指的是程序可以在计算机上运行)。这一过程被称为链接,是由链接程序完成的。

图1.1说明了从源代码到目标代码,再到可执行程序的过程。


c20ccbe6552f2f04e8421711d86f51a707935ad3

图1.1 编译器将您编写的C语言源代码转换为目标代码,然后被链接程序转换为可执行文件

1.4.4 结束开发周期

将程序进行编译和链接,创建出可执行文件后,便可以在系统提示符下输入其名称(或像运行其他程序那样)运行它。如果运行程序时得到的结果与期望的不同,则需要回到第1步。您必须找出导致问题的原因,并在源代码中进行更正。修改源代码后,需要重新编译和链接程序,创建更正后的可执行文件。您将不断地沿这样的循环进行下去,直到程序的执行情况同期望的完全相符。

有关编译和链接,需要注意的最后一点是:虽然前面将编译和链接看作是两个独立的步骤,但很多编译器(如前面提到的DOS编译器)将它们在一步中完成。大多数图形开发环境提供了一个选项,让您设置是分别完成编译和连接还是一步完成。不管编译和连接工作是如何完成的,这两个过程都是独立的操作,即使使用一个命令来完成它们。

C语言程序的开发周期如下:

1.使用编辑器编写源代码。传统上,C语言源代码文件的扩展名为.c(例如,myprog.c、database.c等等)。

2.使用编译器对程序进行编译。如果编译器没有发现任何错误,将生成一个目标文件。编译器生成的目标文件的扩展名为.obj或.o,文件名与源代码文件相同(例如,myprog.c编译为 myprog.obj或myprog.o)。如果发现错误,编译器将报告。在这种情况下,您必须返回到第1步,在源代码中进行修改。

3.使用链接程序对程序进行链接。如果没有发生错误,链接程序将生成一个可执行程序,该程序位于一个磁盘文件中,该文件的扩展名为.exe,文件名同目标文件相同(例如,链接myprog.obj时,生成的可执行文件为myprog.exe)。

4.执行程序。检查程序是否能够正确运行,如果不能,则返回到第1步,对源代码进行修改。

图1.2说明了上述程序开发步骤。除最简单的程序外,对于其他的所有程序,您都可能需要反复经过上述步骤才能完成程序的开发工作。即使是最有经验的程序员,也无法一次编写出完整的、没有任何错误的程序。由于您需要经历编辑-编译-链接-测试周期数次,因此熟悉这些工具(编辑器、编译器和链接程序)就显得至关重要。


440de3743007933cd7c9792816bd9cc841e9be61

图1.2 C语言程序的开发步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值