欢迎来到天天文库
浏览记录
ID:49380568
大小:154.50 KB
页数:13页
时间:2020-02-04
《虎贲C语言第九章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第九章预编译处理____________虎贲讲师:路谨铭____________章节知识点:9.1编译预处理9.1.1不带参数的宏定义9.1.2带参数的宏定义9.1.3带参数的宏和带参数的函数的区别9.2“文件包含”处理笔试考点分布知识点所占分值考试概率难易程度不带参数的宏定义2分20%★带参数的宏定义2分60%★★★文件包含1分30%★★机试考点分布与分析知识点所占分值考试概率难易程度带参数的宏定义10分30%★★★9.1编译预处理在C语言中,凡是以“#”开头的行,都称为“编译预处理”命令行,编译预处理命令并不是C语言本身的组成部分,不能直接对他们编译,而是由预处理程序在编译
2、前作出相应的处理。C语言中有多种预处理命令,在这里我们只讨论两种:#include和#define。这些命令行的后面不得加上“;”,以区别于C语言的语句。所谓无参宏就是宏名后不带任何参数。其定义的一般形式为:#define宏名字符串(或数值)其中的“#”表示这是一条预处理命令,C语言中凡是以“#”开头的命令都为预处理命令。“define”为宏定义命令。说明:(1)宏名的前后应有空格。(2)宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名。(3)宏定义命令其后不要跟分号。(4)字符串(或数值)中如果出现运算符号,则要注意替换后的结果,通常可以在合适的位置加上括号。9
3、.1.1不带参数的宏定义例9.1:一个简单的宏定义#defineE2.71828#include“math.h”main(){floatsum;sum=sqrt(E)+E+E*E+E*E*E+E*E*E*E;printf(“%f”,sum);}例9.2:宏应用举例。#defineN(8*x+x*x)/*定义N来替代表达式(8*x+x*x)*/main(){ints,x;printf("pleaseinputanumber:");scanf("%d",&x);s=5*N+6*N+7*N;/*宏调用*/printf("s=%d",s);}(6)宏定义的嵌套使用如:#define
4、PI3.1415926#defineR5.5#defineCIRCLE2.0*PI*R#defineAREAPI*R*R(7)宏名的有效范围为从定义之处到本源文件结束。习惯上,#define写在程序最前面。(8)宏名出现在一对双引号中,将不会产生置换如:#defineP2.7189main(){printf(“P=%d”,P);}结果:P=2.7189(9)宏定义还可以定义运算符、表达式、甚至可以把格式语句作为宏定义。如:#defineR3.5#defineAREA3.1415926*R*R#definePprintf#defineF"%f"main(){P(F,AREA)
5、;}9.1.2带参数的宏定义宏定义还有一个特点,就是宏替换名可以带有形式参数。在程序中,可以用实际参数代替这些形式参数。它的一般格式为:#define宏名(参数表)字符串例9.4:带参数宏应用举例一。#include#defineMAX(a,b)(a>b)?a:b/*定义M(a,b)替代表达式(a>b)?a:b*/main(){inti=18,j=16;printf("Themaxnumberis:%d",MAX(i,j));}#include#defineB(x)((x)*(x)*(x))/*定义一个名为B的宏*/main(){inti=1
6、;while(i<=8)printf("%d",B(i++));}例9.5:求出下面程序段的结果!文件包含命令的一般形式为:#include"文件名"文件包含命令的功能是把指定的文件添加到预编译部分,从而把指定的文件和当前的源程序文件进行连接。9.2“文件包含”处理
此文档下载收益归作者所有