1.2.2 C-Free环境下的程序建立与运行
C-Free可以将单个C源文件或者工程编译、连接成一个可运行的应用程序。当程序比较小、功能比较简单的时候只需要用单个文件的形式来编程程序就可以。当编写一个大的程序时,往往涉及到的源程序文件不止一个,这时候需要建立一个工程来统一管理这些文件,使用工程,可以方便地将这些文件编译、连接成一个独立的可执行文件。下面将通过具体的实例来说明使用C-Free进行单文件和工程构成C程序的过程。更多关于C-Free的使用,读者也可以使用C-Free帮助菜单下的“C-Free帮助”进行查阅。
【例1-3】以单文件的形式将例1-1的代码在C-Free 5.0环境中进行编辑、编译和运行。
(1)双击桌面上的C-Free快捷方式或选择“开始”菜单中的C-Free命令,启动C-Free。
(2)如果是第一次使用C-Free进行C程序编辑,需要更新默认的新建文件类型。单击菜单栏上的“工具”下的“环境选项”命令,在弹出的对话框中选择“一般”选项卡,并将“新建文件类型”设置为c,如图1.3所示。

图1.3 默认新建文件类型修改
(1)单击工具栏上的“新建”按钮或者单击菜单栏“文件”下的“新建”命令,打开代码编辑器窗口,如图1.4所示。

图1.4 C-Free新的代码编辑器窗口
(2)将例1-1的代码输入到编辑区,如图1.5所示。

图1.5 输入代码后的编辑器窗口
(3)单击工具栏上的“保存”按钮或者菜单栏“文件”下的“保存”命令。在弹出的对话框中选择保存的位置和文件名。本例保存的位置为“D:\test”,保存文件名为“hello.c”,如图1.6所示。

图1.6 保存文件
(4)单击工具栏上的“构建并运行”按钮或者菜单栏“构建”下的“运行”命令,C-Free开始编译hello.c文件,编译的结果显示在消息窗口。如果代码在语法的程序有错误或者警告,消息窗口将显示错误或者警告信息,并自动将错误定位到代码编辑器,高亮显示错误的位置。如果有多条错误或者警告可以通过单击消息窗口的对应内容进行选择,被选择的错误或者警告会在编辑窗口进行高亮显示,如图1.7所示。

图1.7 程序编译结果
(5)程序运行结果如图1.8所示。在控制台窗口中,按任意键将关闭这个窗口,或者单击控制台窗口上的“关闭”按钮,也将关闭这个窗口。

图1.8 程序运行结果
程序在编译、连接和运行的各个阶段都可能会出现问题。编译器只能检查编译和连接阶段出现的问题,而可执行程序已经脱离了编译器,运行阶段出现问题编译器是无能为力的。如果编写的代码正确,编译会提示没有错误(Error)和警告(Warning)。错误(Error)表示程序不正确,不能正常编译、连接或运行,必须要纠正。警告表示可能会发生错误(实际上未发生)或者代码不规范,但是程序能够正常运行,有的警告可以忽略,有的要引起注意。C-Free给出的提示信息格式为:“[类型]文件目录+文件名:行号:字符位置:类型:问题描述”。根据该格式对图1.9进行分析的结果为:D:\test\hello.c的第7行有一个错误,错误的描述是变量a没有定义;第4行有一个警告,警告的原因是程序没有以新行进行结尾。更多关于C语言错误和警告的介绍请参阅附录B。

图1.9 程序编译错误实例
【例1-4】以工程的形式将例1-2的代码在C-Free环境进行编辑、编译和运行。
(1)双击桌面上或者单击“开始”菜单里面的C-Free快捷方式,启动C-Free。
(2)选择“工程”菜单下的“新建”命令,弹出如图1.10所示的对话框。

图1.10 “新建工程”对话框
(3)在图1.10所示的对话框中,选择工程类型为“控制台程序”,输入工程名称为“Proj1”,选择保存位置为“D:\test\Proj1”,然后单击“确定”按钮。这时会弹出向导对话框,如图1.11所示。

图1.11 程序类型选择
(4)选择控制台程序的类型为“空的程序”,然后单击“下一步”按钮,弹出窗口如图1.12所示。

图1.12 语言选择
(5)不需要做任何选择或者修改内容,继续单击“下一步”按钮,弹出如图1.13所示对话框。

图1.13 选择构建配置
(6)在构建配置中选择“mingw5”选项,然后单击“完成”按钮,如图1.13所示。这样C-Free就创建了一个空的工程。目前工程中还没有任何文件,如图1.14所示。

图1.14 空工程图
(7)根据例1.3的方式新建一个文件,命名为“main.c”,同时将该文件保存在和工程文件相同的目录。保存后C-Free会询问,是否希望将文件添加到当前工程中,如图1.15所示。单击“确定”按钮,会弹出如图1.16所示的对话框。

图1.15 工程文件添加询问对话框

图1.16 工程文件夹选择对话框
(8)在图1.16所示的对话框中选择“Source Files”目录,然后单击“确定”按钮,这样文件就被添加到了工程的Source Files文件夹中。添加文件后保存工程,完成后文件列表窗口如图1.17所示。用户也可以通过在文件列表对应的文件夹右击的方式选择添加文件到工程。如果想添加头文件到工程,则可以右击“Header Files”文件夹,添加想要的头文件到工程中。用户也可以通过右击菜单将所有文件夹删除,建立自己想要的文件夹,使用自己的管理方式。

图1.17 工程文件添加完成图
单击工具栏上的“构建并运行”按钮或者菜单栏上的“构建”下的“运行”命令,C-Free将编译工程所包含的文件,如果编译没有错误,将连接所有的目标文件,生成一个独立的.exe程序,最后会自动运行这个程序。程序运行结果如图1.18所示。

图1.18 程序运行结果