最新c c++语言程序设计(西电版第7章 编译预处理(共27张ppt课件).pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《最新c c++语言程序设计(西电版第7章 编译预处理(共27张ppt课件).pptx》由会员分享,可在线阅读,更多相关《最新c c++语言程序设计(西电版第7章 编译预处理(共27张ppt课件).pptx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 编译编译(biny)(biny)预处理预处理C/C+C/C+语言语言(yyn)(yyn)程序设计程序设计第一页,共二十七页。27.1 宏定义宏定义7.2 文件包含文件包含(bohn)7.3 条件编译条件编译7.4小结小结第二页,共二十七页。3 C C语言语言(yyn)(yyn)对源程序在正常编译(包括词法对源程序在正常编译(包括词法分析、语法分析、代码生成和代码优化)之前分析、语法分析、代码生成和代码优化)之前先执行源程序中的预处理命令。预处理后,源先执行源程序中的预处理命令。预处理后,源程序再被正常编译,以得到目标代码(程序再被正常编译,以得到目标代码(OBJOBJ文文件)。件
2、)。第三页,共二十七页。4第四页,共二十七页。5第五页,共二十七页。6无参宏的宏名后不带参数。命令无参宏的宏名后不带参数。命令(mng lng)(mng lng)的一般格式:的一般格式:# #define define 标识符标识符 字符串字符串第六页,共二十七页。7例如例如(lr)(lr):替替换换#define PI 3.14main() float r,s,c; scanf(“%f”,&r); s = r * r * PI; c = 2 * r * PI; printf(“s=%f, c=%f”,s,c);第七页,共二十七页。说明说明:(1)在使用宏定义命令定义符号常量时,)在使用宏定义
3、命令定义符号常量时,通常宏名使用大写字母,以便与变量区别通常宏名使用大写字母,以便与变量区别。这是一种习惯,当然宏名用小写字母也。这是一种习惯,当然宏名用小写字母也不会出现语法错误。不会出现语法错误。(2)预处理程序对符号常量的处理只是进)预处理程序对符号常量的处理只是进行简单的替换工作行简单的替换工作(gngzu),不作语法检查,不作语法检查,如果程序中使用的预处理语句有错,只能如果程序中使用的预处理语句有错,只能在正式的编译阶段检查出来。在正式的编译阶段检查出来。8第八页,共二十七页。(3)宏定义不是语句,在行末不必加分号,如)宏定义不是语句,在行末不必加分号,如加上分号则连分号也一起置换
4、。加上分号则连分号也一起置换。(4)宏定义可以嵌套,即就是在一个宏定义命)宏定义可以嵌套,即就是在一个宏定义命令中可以使用已被定义的宏名作为其字符串。令中可以使用已被定义的宏名作为其字符串。宏替换时就要从后向前宏替换时就要从后向前(xin qin)逐层替换。例如:逐层替换。例如:#define WIDTH 2 #define LENGTH (WIDTH+3) #define AREA (LENGTH*WIDTH)9第九页,共二十七页。(5)对于加有双引号的字符串中出现的宏)对于加有双引号的字符串中出现的宏名不进行替换。例如名不进行替换。例如(lr):#define TWO 2*nint n=8
5、;printf(TWO=%dn,TWO);运行该程序后,输出结果为:运行该程序后,输出结果为:TWO=1610第十页,共二十七页。(6)宏名的作用域为定义该宏名的文件,即)宏名的作用域为定义该宏名的文件,即宏名的作用域是文件级的,从定义时起到文件宏名的作用域是文件级的,从定义时起到文件结束为止。如果有终止宏名命令,则其作用域结束为止。如果有终止宏名命令,则其作用域到终止宏名命令为止。终止宏名命令的格式到终止宏名命令为止。终止宏名命令的格式(g shi)为:为:(7)宏定义时必须注意字符串部分的书写,)宏定义时必须注意字符串部分的书写,保证在宏代换之后与原题意相符。例如:保证在宏代换之后与原题意
6、相符。例如: #define M (y*y+3*y)11#undef #undef 标识符标识符第十一页,共二十七页。12命令的一般命令的一般(ybn)(ybn)形式:形式: 在宏定义中的参数称为形参,在宏调用中的参数在宏定义中的参数称为形参,在宏调用中的参数称为称为实参。实参。 “宏名宏名”同标识符,习惯采用同标识符,习惯采用(ciyng)(ciyng)大写字母;大写字母; “形参表形参表”由一个或多个参数组成,多个参数之间由一个或多个参数组成,多个参数之间用逗号分隔,说明参数时不加类型说明;用逗号分隔,说明参数时不加类型说明;“字符串字符串”中包含了中包含了“形参表形参表”中所指定的参数,
7、它可以中所指定的参数,它可以由若干条语句组成。由若干条语句组成。例如:例如:#define MAX(X,Y) (X)(Y)?(X):(Y)#define #define 宏名宏名( (形参表形参表) ) 字符串字符串第十二页,共二十七页。13带参宏调用带参宏调用(dioyng)(dioyng)的一般形式为:的一般形式为: 带参数的宏定义命令进行宏替换时,不是简单地用带参数的宏定义命令进行宏替换时,不是简单地用“字符串字符串”来替换来替换“宏名宏名”,而是使用,而是使用(shyng)(shyng)“实参实参”来来代换代换“形参形参”,其余部分保持不变。,其余部分保持不变。 宏名宏名( (实参表)
8、实参表)第十三页,共二十七页。说明说明:(1)带参宏定义中,宏名和形参表之间不能)带参宏定义中,宏名和形参表之间不能有空格出现,否则将空格符后边的内容都作有空格出现,否则将空格符后边的内容都作为字符串,成为不带参数的宏定义语句了。为字符串,成为不带参数的宏定义语句了。例如:例如: #define ADD (x,y) (x)+(y)(2)宏代换中的实参一般常为常量、变量或)宏代换中的实参一般常为常量、变量或表达式。在宏展开后容易引起误解的表达式表达式。在宏展开后容易引起误解的表达式,在宏定义时,应将表达式用圆括号括起来,在宏定义时,应将表达式用圆括号括起来,形式参数两边,形式参数两边(lingb
9、in)也应加括号。例如:也应加括号。例如: #define SQ(x) x*x14第十四页,共二十七页。#define PI 3.1415926 #define S (r) PI*r*r #define V(r) 3.0/4* S(r)*r15第十五页,共二十七页。16命令命令(mng lng)(mng lng)的一般形式:的一般形式:格式格式1 1:格式格式2 2:文件包含是指可以在一个源文件中包含另一个源文文件包含是指可以在一个源文件中包含另一个源文件的全部内容,使之成为本文件自身的一部分。用件的全部内容,使之成为本文件自身的一部分。用includeinclude命令命令(mng lng)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新c c+语言程序设计西电版第7章 编译预处理共27张ppt课件 最新 c+ 语言程序设计 西电版第 编译 预处理 27 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内