1.2 简单C程序的开发过程

在Visual C++ 6.0中,编写、运行一个简单的C程序一般分为以下3个步骤:

(1)创建一个空工程。

(2)创建一个C源程序文件

(3)进行编译、连接、运行。

下面通过实例说明在Visual C++ 6.0环境中,如何编辑、编译、连接、运行C语言程序。

例如:输出“hello,world!”。

准备工作:先在D盘建立一个文件夹myc。

1.创建一个工程

(1)在Visual C++ 6.0中,一个源程序文件必须属于一个工程(Project),所以首先来创建一个工程。选择“文件”菜单中的“新建”命令,弹出“新建”对话框,选择“工程”选项卡,并在列表中选择“Win32 Console Application”项,并在“工程”文本框中输入工程名project1;在“C位置”下拉列表框中选择存放项目文件的磁盘和文件夹“D: \myc\”,随着工程名称的输入,在路径的后面自动加入工程名称。选择“创建新工作区”单选按钮,单击“确定”按钮,如图1-5所示。

图1-5 新建工程

(2)接下来弹出一个针对项目类型Win32 Console Application的向导对话框,如图1-6所示。在这里选择第一个选项,也就是默认选项“An empty project”,并单击“完成”按钮。

图1-6 Win32控制台应用程序配置界面

(3)完成后会显示新建工程的有关信息对话框,其中显示出之前所做的配置,以供最后检查。如果确认无误,单击“确定”按钮,该项目即被创建。

(4)项目创建成功后系统打开一个空白的项目,如图1-7所示。

图1-7 新建的空白项目

(5)查看Workspace。在窗口的左半部分的Workspace上,可以看到有两个选项卡:ClassView和FileView。ClassView选项卡会显示当前工程中所声明的类、全局变量等,对于编写C语言程序来说,这个选项卡没有太大作用。FileView选项卡显示了当前项目中的所有文件。以下对图中相关内容进行说明。

①工程:图1-7中显示,Visual C++ 6.0创建了一个名为“project1”的工程,可在窗口标题栏中看到。FileView选项卡左边树形结构中的“project1 files”结点代表了该工程。

②文件和逻辑文件夹:该树形结构工程结点下面有3个预定义的逻辑文件夹,分别是“Source Files”“Header Files”“Resource Files”。每一个文件夹下面都没有文件,这是因为此前选择的是创建一个空的工程。这3个文件夹是Visual C++ 6.0预先定义的。

之所以称这3个文件夹为逻辑文件夹,是因为它们只是在工程的配置文件中定义的,磁盘上并没有物理地存在这3个文件夹。在项目开发过程中也可以删除不使用的逻辑文件夹,或者根据项目的需要创建新的逻辑文件夹,来组织工程文件。

③Workspace(工作空间):在创建project1项目的同时,Visual C++ 6.0也创建了一个名为“project1”的工作空间,并且该工作空间只包含一个工程。如结点“Workspace 'project1':1 project(s)”所示,需要了解下面几点:

Visual C++ 6.0是按照Workspace来管理项目和代码的。一次必须打开一个Workspace。

一个Workspace中可以包含一个或者多个工程。

一个工程可以包含一个或者多个逻辑文件夹。

一个文件夹中可以包含零个或者多个文件。

一个工程至少包含一个源代码文件。

当创建新工程的时候,一个同名的Workspace同时被创建;该Workspace只包含一个项目,就是新创建的这个项目。

或者说,Visual C++ 6.0在管理项目和代码的时候,是按照一个树形的结构来组织的,如下所示:

(6)查看物理文件夹。打开Windows资源管理器,定位到D:\myc\project1目录,可以看到Visual C++ 6.0为项目所创建的文件和文件夹,如图1-8所示。

①project1.dsw:该文件是Workspace描述文件。

②project1.dsp:这是myproject项目配置文件,包括逻辑文件夹在内的关于该项目的所有配置,都保存在此文件中。

图1-8 资源管理器中的项目文件夹

③project1.ncb:这是VC内部使用的一个临时文件。不必关心此文件。

④Debug:Debug版本的编译输出文件将被保存在该文件夹中。如果项目的编译属性修改为Release,会生成另外一个名为“Release”文件夹。

Debug和Release是两个最常见的编译选项。相同源代码生成的Debug版本的.exe文件比Release版本要大一些,因为Debug版本多包含了一些帮助VC++调试程序的符号等信息。

2.创建C源程序文件

创建完一个空的工程,接下来要添加一个源代码程序到该工程中。

步骤如下:

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

图1-9 创建源程序窗口

(2)在“文件”选项卡中选定“C++ Source File”项,输入文件名“helloworld.c”,扩展名必须是“.c”,其他保持默认设置,单击“确定”按钮。

注意:helloworld.c后面的“.c”是必要的,否则就会创建扩展名为“.cpp”的C++文件。

在编辑窗口中输入、编辑源程序,编写完成后的界面如图1-10所示。保存文件。

图1-10 源程序编辑窗口

3.编译、连接和运行

(1)编译。选择“编译”菜单中的“编译”命令或按【Ctrl+F7】组合键或单击编译运行工具栏上的“Compile”按钮,都可以对当前文件进行编译。

执行编译后,信息提示窗口中显示出编译的结果信息,指出源程序中是否存在语法错误。如程序输出信息为:helloworld.obj - 0 error(s),0 warning(s),“error(s)”表示错误具体个数,0表示无错误;“warning(s)”对可能的潜在性错误发出警告,0表示无警告。

如果有错误,还会在该窗口中逐一显示出具体的错误类型及位置,如图1-11所示,只要双击某错误行,便可直接指向编辑窗口中错误所在行,以方便查看和改正错误。然后再次编译。直到源程序中没有任何语法错误,表示编译成功,已正确生成目标文件,即.obj文件,接着就可以进行连接了。

图1-11 程序中有语法错误的情况

建议:对有多个错误的情况,要分析错误提示,根据前后语句找出出错原因,再进行修改,且最好从第一个错误开始修改,因为前面的错误可能会连带后面也出错;最好每改正一个错误,就编译一次,这样能够有效地消除连带错误。

(2)连接。目标文件生成后,就要把目标程序与系统中的库函数连接起来,生成可执行文件,即.exe文件。

进行连接时可以选择“编译”菜单中的“构建project1.exe”命令或按【F7】键或单击工具栏中的“Build”按钮。

与编译类似,连接的结果也会在信息提示窗口中显示,若有错误提示,必须改正后重新再进行编译、连接,直到生成没有错误的可执行文件。

注意:编译和连接操作也可一次完成。如果尚未进行编译就直接选择连接,系统将会先进行编译,若成功后再自动进行连接。

(3)运行。运行可执行文件可以选择“编译”菜单中的“运行project1.exe”命令或按【Ctrl+F5】组合键或单击工具栏中的“BuildExecute”按钮。

若程序能够正常运行,系统会在Visual C++ 6.0界面上弹出一个命令行方式的用户窗口,如果需要,用户可以通过这个窗口给程序输入数据,而程序运行的结果也是显示在这个界面上的,如图1-12所示。其中的“Press any key to continue”是系统提示信息,只要根据该提示按任意键,便可返回编辑界面。

图1-12 程序输出窗口

4.关闭程序工作区

当一个程序调试、运行完毕后,必须先关闭当前程序的工作区,才可进行下一个程序的工作,否则可能会出现意想不到的错误。关闭工作区可选择“文件”菜单中的“关闭工作区”命令来实现。