C语言——第07章预处理.ppt
《C语言——第07章预处理.ppt》由会员分享,可在线阅读,更多相关《C语言——第07章预处理.ppt(28页珍藏版)》请在三一文库上搜索。
1、,第7章,预处理命令,主要内容,7.1 概述 7.2 宏定义 7.3“文件包含”处理,7.1 概述,合理地使用预处理功能可以程序便于阅读、修改、移植和调试,也有利于模块华程序设计。,以“#”号开头的预处理命令,如#include,宏定义命令#define等,这些预处理命令放在函数之外,一般放在源文件的前面,称为预处理部分。,7.2 宏定义,7.2.1 无参宏定义,宏定义一般形式为:,define 标识符 字符串 例如:define PI 3.1415926,宏定义的作用是在本程序文件中用指定的标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI
2、都用“3.1415926”代替。这种方法使用户能以一个简单的名字代替一个长的字符串. 这个标识符(名字)称为“宏名” 在预编译时将宏名替换成字符串的过程称为宏替换或宏展开. define是宏定义命令。,【例7.1】 不带参数宏的使用,(1) 宏名一般习惯用大写字母表示,以便与变量名相区别。但这并非规定,也可用小写字母。 (2) 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。 宏定义是用宏名代替一个字符串,只作简单置换,不作正确性检查。如有错误,只能在编译已被宏展开后的源程序时发现。,说明:,(3) 宏定义不是说明或语句,不必在行末加分号。如果加了分号则会连分号一起进行置换。
3、 (4) define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,define命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。 可以用 undef命令终止宏定义的作用域。,说明:,#define G 9.8 _ void main() G的有效范围 - #undef G f1() ,在f1函数中,不再代表9.8。这样可以灵活控制宏定义的作用范围。,(5) 宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。,说明:,【例7.2】 #define OK 100 void main() printf(“OK“); printf(“n“); ,
4、(6) 宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名,在宏展开时由预处理程序层层代换。,说明:,例如: # define PI 3.1415926 # define S PI*y*y 对语句 printf(“%f”,S); 在宏替换后变为: printf(“%f”,3.1415926*y*y);,(7) 对“输出格式”作宏定义,可以减少书定麻烦。,说明:,【例7.3】中就采用了(7)那种方法。 #include #define P printf #define D “%dn“ #define F “%fn“ void main() int a=5, c=8, e=11; float
5、 b=3.8, d=9.7, f=21.08; P(D F,a,b); P(D F,c,d); P(D F,e,f); ,执行结果: 5 3.800000 8 9.700000 11 21.080000,下面叙述中正确的是( )。 A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换,B,7.2.2 带参数的宏定义,作用:不是进行简单的字符串替换,还要进行参数替换。,带参数的宏定义一般形式为:,define 宏名(形参表) 字符串,带参宏调用的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 07 预处理
链接地址:https://www.31doc.com/p-2090062.html