理论教育 C语言程序设计|处理文件包含问题

C语言程序设计|处理文件包含问题

时间:2023-11-02 理论教育 版权反馈
【摘要】:在前面章节中多次用到了#include命令,这个命令用于实现“文件包含”,其作用是将一个源文件的全部内容包含进另一个源文件。例7.3将下面的宏存放在一个文件中,文件名为hong.h。关于“文件包含”的3点说明:一个#include命令只能指定一个被包含文件。例7.4已知文件wj.txt包含2个函数fun1和fun2,wj.txt的内容如下:编写以下程序,以myfile.c为文件名保存,然后编译、连接并运行。

C语言程序设计|处理文件包含问题

在前面章节中多次用到了#include命令,这个命令用于实现“文件包含”,其作用是将一个源文件的全部内容包含进另一个源文件。被包含的文件可以是C语言源文件、库函数头文件等。

由于#include命令通常放在文件的开头,所以这些被包含的文件通常被称为标题文件或头文件,这些文件常以“.h”(h为head的首字母)为文件的扩展名。当然,也可以用其他文件扩展名,但无论用什么扩展名,这个被包含文件必须是文本文件。

C集成环境为用户提供了许多库函数,每个库函数都有自己对应的头文件,若要使用一些库函数中定义的数据和变量,就必须在程序中使用#include命令将该库函数对应的头文件包含进来,否则,程序在编译时就会报错。

文件包含的使用格式有以下两种:

使用"文件名"格式时,预处理程序首先检索当前文件目录是否有该文件,如果没有,再检索C编译系统指定的目录。使用<文件名>格式时,预处理程序直接检索C编译系统指定的目录。

使用"文件名"格式时,文件名前面可添加路径,如“#include"c:\vc++\include\math.h"”。

常用的标准库头文件的扩展名都是.h。例:

使用“文件包含”命令,可以减少程序设计人员的工作量,提高编程效率。例如,可以将经常使用的数学公式或者一组固定的符号常量(如PI=3.1415926、E=2.71828、G=9.81、GD=0.618等)用宏定义命令组成一个文件,然后用#include命令将该文件包含到正在编写的源文件中,源文件中的程序中就可以使用这些符号常量。又如,多名软件工程师共同协作开发大型软件时,可以将程序中共同的常量、函数原型、宏等定义在一个文件中,然后使用#include命令将该文件包含进来,这样可以方便编写工作且不易出错。

例7.3 将下面的宏存放在一个文件中,文件名为hong.h。

编写一个程序myfi.c,包含文件hong.h。myfi.c的内容如下:

【分析】本题的文件hong.h定义了4个宏,分别计算圆锥表面积、圆锥体积、圆柱表面积、圆柱体积。程序myfi.c包含文件hong.h,因此可以在myfi.c中使用这4个宏,从键盘输入实参的值,完成计算。(www.daowen.com)

关于“文件包含”的3点说明:

(1)一个#include命令只能指定一个被包含文件。也就是说,如果要包含n个文件,就必须用n个#include命令。

(2)假设f1.c、f2.c、f3.c是3个不同的文件,若在f1.c中有以下两行命令:

则在文件f1.c中可以用f2.c和f3.c的内容;在文件f2.c中可以用f3.c的内容,不必在文件f2.c中再使用“#include<f3.c>”命令。

(3)文件包含可以嵌套使用。若在f1.c中只有“#include<f2.c>”命令,而在f1.c中又要使用f3.c的内容,也可以让f2.c中出现“#include<f3.c>”命令。

例7.4 已知文件wj.txt包含2个函数fun1和fun2,wj.txt的内容如下:

编写以下程序,以myfile.c为文件名保存,然后编译、连接并运行。

【分析】本题程序的执行情况是:在编译myfile.c时,预处理过程中用wj.txt文件的文本替换myfile.c中的“#include"wj.txt"”。因此,执行该程序时,主函数调用函数fun1和fun2,先输出斐波那契数列的前20项,再输出大衍数列的前20项。

斐波那契数列的第1项和第2项都是1,从第3项开始,每1项都等于前两项之和。斐波那契数列的前20项是:1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987、1597、2584、4181、6765。

大衍数列的第n(n=1,2,3,…)项满足:若n是奇数,则该项等于img若n是偶数,则该项等于img大衍数列的前20项是:0、2、4、8、12、18、24、32、40、50、60、72、84、98、112、128、144、162、180、200。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈