海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第九章 编译预处理

〔语言序设计 第九章编译预处理 任课老师:台安
第九章 编译预处理 任课老师:台安

编译预处理概念 编译:对源程序的说明和执行部分进行词法、语法分 析,生成代码,优化等。 编译预处理:在源程序文件中,加入“编译预处理命令′ 使编译程序在对源程序进行通常的编译之前,先对这些命 令进行预处理,然后将预处理的结果和源程序一起再进行 通常的编译处理,以得到目标代码(OBJ文件)。 C提供的编译预处理命令 宏命令( define) 文件包含命令( Include 条件编译命令 这些命令均以#开头,以区别于语句 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 编译预处理概念 ❖编译:对源程序的说明和执行部分进行词法、语法分 析,生成代码,优化等。 ❖编译预处理:在源程序文件中,加入“编译预处理命令” , 使编译程序在对源程序进行通常的编译之前,先对这些命 令进行预处理,然后将预处理的结果和源程序一起再进行 通常的编译处理,以得到目标代码(OBJ文件)。 ❖C提供的编译预处理命令 ❖ 宏命令(define) ❖ 文件包含命令(include) ❖ 条件编译命令 ❖ 这些命令均以#开头,以区别于语句

第九章编译预处理 9.1宏定义 令9.1.1不带参数的宏定义 9.1.2带参数的宏定义 92“文件包含”处理 93条件编译 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 第九章 编译预处理 ❖ 9.1 宏定义 ❖ 9.1.1 不带参数的宏定义 ❖ 9.1.2 带参数的宏定义 ❖ 9.2 “文件包含”处理 ❖ 9.3 条件编译

91宏定义 不带参数的宏 令一般形式:# define标识符字符串 tH: #define Pi 3. 1415926 作用:用标识符(称为“宏名”)P代 替字符串“3.1415926”。 在预编译时,将源程序中出现的宏名PI 替换为字符串“3.1415926” ,这一替换过 程称为“宏展开” 令# define:宏定义命令 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 9.1 宏定义 ❖ 一、不带参数的宏 ❖ 一般形式: #define 标识符 字符串 ❖ 如: #define PI 3.1415926 ❖ 作用:用标识符(称为“宏名”)PI代 替字符串“3.1415926”。 ❖ 在预编译时,将源程序中出现的宏名PI 替换为字符串“3.1415926” ,这一替换过 程称为“宏展开”。 ❖ #define:宏定义命令

例91:宏定义 #define pi 3. 14159 main i float l,r,s Scan(f”,&r);“输入圆的半径 l=r*2.0*PI;圆周长 S=r*r米PI;圆面积 V=4.0/3.0*r*rr*PI;产球体积啊 printf(1=o of ns=oofnv=%fn,l,S,v) 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 例9.1:宏定义 #define PI 3.14159 main( ) { float l, r, s, v; scanf(“%f”,&r); /* 输入圆的半径*/ l= r *2.0* PI; /* 圆周长*/ s=r*r*PI; /* 圆面积 */ v=4.0/3.0*r*r*r*PI; /* 球体积 */ printf(“l=%f\ ns=%f\nv=%f\n”,l, s,v); }

关于宏定义的说明: 令1、一般宏名用大写字母表示。(变量名一般用小写字母) 2、使用宏可以提高程序的可读性和可移植性。如上述程序中, 多处需要使用π值,用宏名既便于修改又意乂明确 3、宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检 查语法。语法检查在编译时进行。 令4、宏定义不是C语句,后面不能有分号。如果加入分号,则连分 号一起替换。 如 .#define pi3. 14 15926 o area= Pr 在宏扩展后成为 area=3.1315926;*r*r 结果,在编译时出现语法错误。 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 关于宏定义的说明: ❖ 1、一般宏名用大写字母表示。(变量名一般用小写字母)。 ❖ 2、使用宏可以提高程序的可读性和可移植性。如上述程序中, 多处需要使用π值,用宏名既便于修改又意义明确。 ❖ 3、宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检 查语法。语法检查在编译时进行。 ❖ 4、宏定义不是C语句,后面不能有分号。如果加入分号,则连分 号一起替换。 ❖ 如: ❖ #define PI 3.1415926; ❖ area = PI*r*r; ❖ 在宏扩展后成为: ❖ area = 3.1315926;*r*r; ❖ 结果,在编译时出现语法错误

关于宏定义的说明: 5、通常把#defi命令放在一个文件的开头,使其在本 文件全部有效。 6、宏定义终止命令#mde结束先前定义的宏名。 令# define g9.8 今main() # under/取消G的意义 今1() 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 关于宏定义的说明: ❖ 5、通常把#define命令放在一个文件的开头,使其在本 文件全部有效。 ❖ 6、宏定义终止命令 #undef结束先前定义的宏名。 ❖ #define G 9.8 ❖ main( ) ❖ { ❖ } ❖ #undef G /* 取消G的意义*/ ❖ f1( ) ❖ { ❖ ┆ ❖ }

例92宏代换 #define f x+ main() int x=4, y=5 if(x ++<y z=2*f else z=f/2 printf("n%od,z) 结果请选择: (A)20(B)15(C)18()4 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 例9.2 宏代换 #define f x+y main( ) { int x=4, y=5, z; if(x ++ < y) z=2*f; else z=f / 2; printf(“\n%d”,z); } 结果请选择: (A)20 (B) 15 (C) 18 (D) 4

带参数的宏 一般形式 # define宏名(参数表)字符串 令带参数的宏在展开时,不是进行简单的 字符串替换,而是进行参数替换。例、 #define S(a,b)a 其中*保留 area=S(3,2)得3#2 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 二、带参数的宏 ❖ 一般形式: ❖ #define 宏名(参数表) 字符串 ❖ 带参数的宏在展开时,不是进行简单的 字符串替换,而是进行参数替换。例

[例93带参数的宏 #define pi 3. 1415926 #define s(r) pirr main float a, area, a=3.6 area=S(a); printf(r%ofnarea=%ofn", a, area) 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 [例9.3] 带参数的宏 #define PI 3.1415926 #define S(r) PI*r*r main( ) { float a, area; a = 3.6; area = S(a); printf("r=%f\narea=%f\n",a,area); }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第八章 函数.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第七章 数组.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第六章 循环控制.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第五章 选择结构程序设计.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第四章 最简单的C程序设计—顺序程序设计.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第三章 数据类型、运算符与表达式.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第二章 程序的灵魂—算法.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第一章 概述(主讲:台安).ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十三章 文件.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十二章 位运算.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十一章 结构体.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十章 指针.ppt
- 《C语言程序设计》课程教学资源:C语言输入输出函数(台安).ppt
- 清华大学:《单片机原理与应用技术》课程教材电子教案(PPT课件讲稿)第9章 串行扩展技术.ppt
- 清华大学:《单片机原理与应用技术》课程教材电子教案(PPT课件讲稿)第8章 串行通信.ppt
- 清华大学:《单片机原理与应用技术》课程教材电子教案(PPT课件讲稿)第7章 并行扩展技术.ppt
- 清华大学:《单片机原理与应用技术》课程教材电子教案(PPT课件讲稿)第6章 定时器/计数器.ppt
- 清华大学:《单片机原理与应用技术》课程教材电子教案(PPT课件讲稿)第5章 中断系统.ppt
- 清华大学:《单片机原理与应用技术》课程教材电子教案(PPT课件讲稿)第4章 汇编语言程序设计.ppt
- 清华大学:《单片机原理与应用技术》课程教材电子教案(PPT课件讲稿)第3章 8051指令系统.ppt
- 《C语言》课程教学课件(PPT讲稿)第3章 C语言的基本程序设计.ppt
- 《C语言》课程教学资源(讲义)上机实验.doc
- 《C语言》课程教学课件(PPT讲稿)第5章 指针.ppt
- 《C语言》课程教学课件(PPT讲稿)第6章 函数(1/2).ppt
- 《C语言》课程教学课件(PPT讲稿)第6章 函数(2/2).ppt
- 《C语言》课程教学课件(PPT讲稿)第1章 概述.ppt
- 《C语言》课程教学课件(PPT讲稿)第2章 C语言的数据类型、运算符和表达式.ppt
- 《C语言》课程教学课件(PPT讲稿)第3章 C语言的基本程序设计.ppt
- 《C语言》课程教学课件(PPT讲稿)第4章 数组.ppt
- 《C语言》课程教学课件(PPT讲稿)第5章 指针.ppt
- 《C语言》课程教学课件(PPT讲稿)第6章 函数.ppt
- 《C语言》课程教学课件(PPT讲稿)第7章 常用基本算法的C语言实现.ppt
- 《C语言》课程教学课件(PPT讲稿)第8章 结构体、共用体和枚举类型.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第一章 计算机网络概述(溪利亚).ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第三章 数据链路层(1/2).ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第三章 数据链路层(2/2).ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第二章 物理层.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第五章 运输层.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第六章 应用层.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第四章 网络层.ppt