欢迎来到天天文库
浏览记录
ID:52376182
大小:920.06 KB
页数:25页
时间:2020-04-05
《《预处理命令》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章预处理命令主要内容9.1宏定义9.2“文件包含”处理9.3条件编译C程序上机步骤:编辑链接编译执行程序代码的录入,生成源程序*.cpp(VC++)或*.c(TC)。语法分析查错,翻译生成目标程序*.obj。运行程序,得到程序结果。与其它目标程序或库链接,生成可执行程序*.exe。导读C语言提供了一些以#开头的指令,如:#define#include等。这些指令是在编译以前就事先进行处理的,因而称为“编译预处理”指令。可以用编译预处理指令实现以下三种功能:(1)宏定义(2)文件包含(3)条件编译导读
2、1、不带参的宏定义用一个指定的标识符(宏名)代表一个字符串。一般形式:#define标识符字符串如:#definePI3.1415926一般宏名用大写字母。有了这一宏定义后,程序中凡是用到3.1415926的地方都可以以宏名PI出现。9.1宏定义例:定义一个宏名来代表一个参数。#definePI3.1415926voidmain(){floatr=2,c,s;c=2*PI*r;s=PI*r*r;}系统在对程序进行编译以前,首先将所有的编译预处理指令进行预处理,对本例来说,就是将程序中所有的宏名PI还原成
3、3.1415926,——宏展开。9.1宏定义c=2*3.1415926*r;s=3.1415926*r*r;例:定义一个宏名来代表一个数据个数。#defineN#includevoidmain(){inta[N],i;floats=0;for(i=0;i4、来代表一个计算公式。#definePI3.1415926#defineAREAPI*r*r#includevoidmain(){r=3,s;s=AREA;printf(“%f”,s);}注意:系统对宏定义的预处理是一个字符串的还原过程。9.1宏定义s=PI*r*r;s=3.1415926*r*r;注意以下程序的运行结果:#defineF#includevoidmain(){intx=3,y=5,z;z=2*F;printf(“%d”,z);}9.1宏定义z=z5、*x+y;z=z*(x+y);(x+y)()x+y2、带参的宏定义宏定义也可以带参数,其一般形式为:#define宏名(参数表)字符串如:#defineS(a,b)a*barea=S(3,2);定义宏名S代表矩形面积,参数a,b为边长。宏展开过程:S(3,2)a*b3*29.1宏定义在一个源文件中将另一个源文件的内容包含进来。文件包含指令的一般形式:#include“文件名”或#include<文件名>用<>时,系统在存放C库函数头文件的目录中寻找要包含的文件,这称为标准方式。用“”时,系统在用户当前目6、录中寻找要包含的文件,如果找不到,在按标准方式查找。9.2“文件包含”处理#include“file2.c”Afile1.cABBfile1.cfile2.c9.2“文件包含”处理例:如果文件1包含文件2,而文件2中要包含文件3的内容。file1.c#include“file2.c”file2.c#include“file3.c”file3.cCABfile1.cCBA9.2“文件包含”处理例:如果文件1包含文件2,而文件2中要包含文件3的内容。file1.c#include“file3.c”#incl7、ude“file2.c”file2.cfile3.cCABfile1.cCBA9.2“文件包含”处理#include“file2.c”#include“file3.c”CB例:#include#includevoidmain(){floata,b,c,s,area;scanf(“%f%f%f”,&a,&b,&c);s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“%f”,area);}9.2“文件包含”处理#i8、nclude“f.h”#includevoidmain(){printf(“%f”,f1(3.0));printf(“%f”,fac(10));}floatf1(floatr){return(PI*r*r);}floatfac(intn){inti;floats=1;for(i=1;i<=n;i++)s*=i;return(s);}#definePI3.1415926floatf1(floatr);floatfac
4、来代表一个计算公式。#definePI3.1415926#defineAREAPI*r*r#includevoidmain(){r=3,s;s=AREA;printf(“%f”,s);}注意:系统对宏定义的预处理是一个字符串的还原过程。9.1宏定义s=PI*r*r;s=3.1415926*r*r;注意以下程序的运行结果:#defineF#includevoidmain(){intx=3,y=5,z;z=2*F;printf(“%d”,z);}9.1宏定义z=z
5、*x+y;z=z*(x+y);(x+y)()x+y2、带参的宏定义宏定义也可以带参数,其一般形式为:#define宏名(参数表)字符串如:#defineS(a,b)a*barea=S(3,2);定义宏名S代表矩形面积,参数a,b为边长。宏展开过程:S(3,2)a*b3*29.1宏定义在一个源文件中将另一个源文件的内容包含进来。文件包含指令的一般形式:#include“文件名”或#include<文件名>用<>时,系统在存放C库函数头文件的目录中寻找要包含的文件,这称为标准方式。用“”时,系统在用户当前目
6、录中寻找要包含的文件,如果找不到,在按标准方式查找。9.2“文件包含”处理#include“file2.c”Afile1.cABBfile1.cfile2.c9.2“文件包含”处理例:如果文件1包含文件2,而文件2中要包含文件3的内容。file1.c#include“file2.c”file2.c#include“file3.c”file3.cCABfile1.cCBA9.2“文件包含”处理例:如果文件1包含文件2,而文件2中要包含文件3的内容。file1.c#include“file3.c”#incl
7、ude“file2.c”file2.cfile3.cCABfile1.cCBA9.2“文件包含”处理#include“file2.c”#include“file3.c”CB例:#include#includevoidmain(){floata,b,c,s,area;scanf(“%f%f%f”,&a,&b,&c);s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“%f”,area);}9.2“文件包含”处理#i
8、nclude“f.h”#includevoidmain(){printf(“%f”,f1(3.0));printf(“%f”,fac(10));}floatf1(floatr){return(PI*r*r);}floatfac(intn){inti;floats=1;for(i=1;i<=n;i++)s*=i;return(s);}#definePI3.1415926floatf1(floatr);floatfac
此文档下载收益归作者所有