第7章编译预处理.ppt
《第7章编译预处理.ppt》由会员分享,可在线阅读,更多相关《第7章编译预处理.ppt(14页珍藏版)》请在三一办公上搜索。
1、,第七章,编译预处理,所谓预处理是指,在对源程序进行编译之前,先对源程序中的预处理命令(主要指宏定义命令、文件包含命令和条件编译命令)进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。,预处理,宏定义文件包含条件编译,define#include,为了和一般C语句相区别,这些命令以符号#开头。,7.1.1 不带参数的宏定义(简单替换),用标识符来代表一个字符串(给字符串取个名字)。C语言用“#define”进行宏定义。C编译系统在编译前将这些标识符替换成所定义的字符串。,概念,格式,define 标识符 字符串,相关概念,宏名:宏定义中的标识符称为“宏名”。宏展开:在预编译时
2、将宏名替换成字符串的过程称 为“宏展开”。,#define PI 3.1415926,7.1 宏定义,#include#define PI 3.1415926 void main()float radius,length,area,volume;printf(Input a radius:);scanf(%f,例7.1 输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。,1、宏名遵循标识符规定,习惯用大写字母表示,以便区别普通的变量。2、#define之间不留空格,宏名两侧空格(至少一个)分隔。3、宏定义字符串不要以分号结束,否则分号也作为字符串的一部分参加展开。从这点上看宏
3、展开实际上是简单的替换。,说明,#define PI 3.14;area=PI*r*r;,area=3.14;*r*r;,4、宏定义是预处理指令,与定义变量不同,它只是进行简单的字符串替换,不分配内存。5、宏定义用宏名代替一个字符串,并不管它的数据类型是什么,也不管宏展开后的词法和语法的正确性,只是简单的替换。是否正确,编译时由编译器判断。例如:#define PI 3.I4 照样进行宏展开(替换),是否正确,由编译器来判断。6、#define命令出现在程序中函数的外面,宏名的有效范围从定义命令开始直到本源程序文件结束。可以通过#undef终止宏名的作用域。,#define G 9.8#def
4、ine PI 3.14 int f1()#undef Gvoid main(),7、宏定义时,可以引用已定义的宏名,可以层层置换。若宏名出现在双引号“”括起来的字符串中时,将不会产生宏替换。,#define R 3.0#define PI 3.14#define L 2*PI*R#define S PI*R*Rvoid main()printf(“L=%fnS=%fn”,L,S);,printf(“L=%fnS=%fn”,2*3.14*3.0,3.14*3.0*3.0);,7.1.2 带参数的宏定义,带参数的宏定义不只是进行简单的字符串替换,还要进行参数替换。,格式,概念,define 宏名(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 预处理
链接地址:https://www.31ppt.com/p-5335204.html