1.3 使用开发工具编写C语言程序

1.3.1 C语言程序的开发步骤

C语言程序的开发分为4个步骤:编辑、编译、连接、运行,如图1.1所示。

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

1.编辑

编辑源程序,可以用文字处理软件编写源程序,也可以用集成化的编译开发程序设计软件,如Microsoft VC++。C语言源程序的扩展名为.c。

2.编译

源程序编写好之后,可以进行编译。编译是将源程序转换成二进制文件,即目标文件,扩展名为.obj。在编译过程中可以发现在源程序编写过程中出现的错误,这种错误一般是由书写错误造成的,因此这种错误称为语法错误,这种错误是易于修改的。必须在此阶段将所有的语法错误修改完成才能进入下一步,语法错误大多可以根据编译工具的提示加以修正。

3.连接

编译成功后的文件并不能运行,因为这种程序虽然称之为目标文件,但仍是半成品,不能执行。在目标程序中还没有为函数、变量等安排具体的地址,因此也称为浮动程序。所以连接就是将若干目标文件加以归并、整理,为所有的函数、变量分配具体地址,同时将库函数连接到目标文件中,生成可执行程序,扩展名为.exe。

在连接的过程中也可能发现错误,这种错误可能是由于设计不足或缺陷引起的,这种错误称为逻辑错误。逻辑错误是不易被发现的,应尽可能地加以避免。逻辑错误的修正往往需要对程序进行跟踪调试才能完成。

4.运行

根据运行的不同目的,运行可分为调试运行、测试运行和应用运行。

(1)调试运行:是专门为验证某些函数的正确性而进行的,被运行的主函数通常就是一个调试程序,运行时通过输入一些特定的数据,观察它是否产生预期的输出。如果发现任何不正常的情况,应配合使用程序跟踪等手段,观察程序是否按预期的流程运行,程序中的某些变量的值是否如预期的那样变化,从而判定出错的具体原因和位置,以便加以纠正。

(2)测试运行:是应用运行前的试运行,是为了验证整个应用系统的正确性,如果发现错误,应进一步判断错误的原因和产生错误的大致位置,以便加以纠正。

(3)应用运行:是指程序正式投入使用后的运行,目的是通过程序运行完成预先设定的功能,从而获得相应的效益。

注:以上提到的源程序、目标程序、可执行程序的区别如表1-1所示。

表1-1 源程序、目标程序、可执行程序的区别

1.3.2 使用Microsoft Visual C++ 6.0编写C语言程序

Microsoft Visual C++ 6.0,简称VC 6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言”的程序。Visual C++是一个功能强大的可视化软件开发工具,自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。

Visual C++ 6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(Integrated Development Environment,IDE)。Visual C++ 6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

目前最新版C++编译器集合在Microsoft Visual Studio 2017软件里面,包含C++(支持面向对象程序设计的大型语言)、Visual Basic(支持名面向对象程序设计的语言)、Java(适用网络的语言)、C#、J#、.net。其中,VC开发环境的版本已经升级至Microsoft Visual C++ 2017,对C++的支持更加全面稳定。

Visual C++不仅支持C++语言,同时也支持C语言,所以我们可以采用VC 6.0开发C程序。

利用Visual C++ 6.0集成环境开发C程序的过程如下。

1.启动Visual C++ 6.0(见图1.2)

图1.2 Visual C++ 6.0界面

方法一:单击Windows “开始”菜单→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”命令;

方法二:在桌面上双击Visual C++ 6.0图标

2.新建C语言源程序文件,如图1.3所示

图1.3 新建C语言源程序文件

(1)单击Visual C++ 6.0菜单栏中的“文件(File)”→“新建(New)”命令,打开“新建(New)”对话框。

(2)单击“文件(Files)”选项卡。

(3)单击“C++ Source File”选项,在“文件(File)”文本框中输入程序文件名,在“位置(Location)”文本框中输入程序文件存储位置。

文件名可以写上扩展名.c,也可以不写扩展名。不写扩展名.c则会使用VC 6.0默认的扩展名.cpp。.c扩展名的文件是C语言源文件,.cpp扩展名的文件是C++语言源文件。因为C++兼容C,所以可以在.cpp文件中编写C语言程序。

(4)单击“确定(OK)”按钮。

3.在文件编辑区窗口输入源程序文件(见图1.4)

图1.4 编辑C语言源程序文件

4.编译程序

(1)编译程序

方法一:选择菜单栏中的“组建(Bulid)”→“编译(Compile)”命令,如图1.5所示。

图1.5 编译程序

方法二:单击组建(Bulid)工具栏最左边的“编译(Compile)”按钮进行编译和连接。

方法三:按组合键【Ctrl+F7】。

(2)第一次编译时会弹出新建项目工作空间提示,如图1.6所示,选择“是(Y)”即可。

(3)随后将弹出保存源程序文件提示,如图1.7所示,选择“是(Y)”即可。

图1.6 新建项目工作空间提示

图1.7 保存源程序文件提示

(4)编译完成时,下方的调试信息输出区会显示发现的错误和警告,如图1.8所示。

图1.8 输出编译中发现的错误和警告

编译过程中系统如发现程序有语法错误或不严谨,会在调试信息输出区窗口中给出相应的提示信息,包括错误或警告的位置、代号、性质、原因和数量等信息。此时双击某一提示信息,则编辑区窗口左侧会出现一个蓝色箭头,指示出该错误或警告所在的程序行。用户可以根据给出的提示信息和位置对源程序进行修改,然后重新编译,直到通过为止。

提示信息有两种:error 和 warning。error 表示不解决程序就无法运行;warning 表示不修改程序可以运行,但可能会导致错误。warning在开发C语言程序过程中可以不予理会,但是error必须解决。

5.连接程序

(1)连接程序

方法一:选择菜单栏中的“组建(Bulid)”→“组建(Bulid)”命令,如图1.9所示。

图1.9 连接程序

方法二:单击组建(Bulid)工具栏上左边第二个的“组建(Bulid)”按钮进行编译和连接。

方法三:按下【F7】键。

(2)连接完成时,下方的调试信息输出区中也会显示在连接中发现的错误和警告,如图1.10所示。

图1.10 输出连接中发现的错误和警告

在连接过程中,系统如发现程序有错误或警告,则在调试信息输出区窗口中显示错误或警告的代号、原因和数量等信息。用户可以据此对源程序进行相应的修改,然后重新组建,直到通过为止。

6.运行程序

(1)运行程序

方法一:选择菜单栏中的“组建(Bulid)”→“执行(Execute)”命令,如图1.11所示。

图1.11 执行程序

方法二:单击组建(Bulid)工具栏上右边第三个的“执行(Execute Program)”按钮

方法三:按下组合键【Ctrl+F5】。

(2)程序运行成功时,屏幕上将会输出执行结果,并会由操作系统添加一句提示信息“Press any key to continue”,如图1.12所示。此时按任意键返回VC 6.0主窗口。

图1.12 输出执行结果

(3)在运行程序过程中如果出现运行错误,用户需要修改源程序文件,然后重新编译、连接和执行。

运行错误不属于语法错误,所以系统不会给出提示信息,需要用户通过调试自行发现错误并改正。

(4)运行完毕,需要关闭当前工作空间,再进行下一个程序的编写。

单击菜单栏中的“文件(File)”→“关闭工作空间(Close Workspace)”,如图1.13所示。

图1.13 关闭工作空间

(5)随后将弹出询问是否要关闭所有文档的对话框,如图1.14所示,选择“是(Y)”即可。

图1.14 询问是否要关闭所有文档的对话框

(6)如果没有关闭当前工作空间就编写下一个程序,则在连接下一个程序时会出现错误提示,如图1.15所示。

图1.15 main函数已经在C1.obj文件中定义过了

因为在同一个工作空间编写两个程序会导致同一个工作空间中出现了两个main函数,而一个C语言程序中有且只能有一个main函数,所以会发生以上错误。

开发C语言程序中常见的错误提示信息、常见错误的修改及VC++ 6.0调试工具的使用可以参考附录E、附录F、附录G。

1.3.3 编写C语言程序时应遵循的良好习惯

在编程时应力求遵循以下这些规则,以养成良好的编程风格。

●一个语句占一行。

●用大括号{}括起来的部分,通常表示程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。每一组{}要对齐。

●低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。

●输入引号、括号等符号时成对输入,然后再在中间添加内容。

●在程序源文件开头处对本文件所有函数进行声明。

●在函数开头处对本函数所有变量进行定义。

●变量用小写字母,常量用大写字母。

●有合适的空行。

●有足够的注释。

C语言是目前世界上使用最广泛的一种计算机语言,语言简洁紧凑,使用方便灵活,功能很强,既有高级语言的优点,又具有低级语言的功能,既可用于编写系统软件,又可用于编写应用软件。

C语言程序由函数构成,函数由语句构成,语句由标识符、关键字、运算符、分隔符、常量、注释符等构成。函数是程序的基本功能块,C语言程序由一个或多个函数构成。程序中有且只有一个main函数,执行由main函数开始,在main函数结束。

开发一个C语言程序要经过4个步骤:编辑、编译、连接、执行。开发过程的每一步都要注意修改错误,不要留到下一个环节。VC++是很好的集成开发环境,支持C语言的规范,可以用于C语言程序的开发。