C语言-第07章预处理

C语言-第07章预处理

ID:40840964

大小:287.01 KB

页数:28页

时间:2019-08-08

C语言-第07章预处理_第1页
C语言-第07章预处理_第2页
C语言-第07章预处理_第3页
C语言-第07章预处理_第4页
C语言-第07章预处理_第5页
资源描述:

《C语言-第07章预处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章预处理命令主要内容7.1概述7.2宏定义7.3“文件包含”处理7.1概述合理地使用预处理功能可以程序便于阅读、修改、移植和调试,也有利于模块华程序设计。以“#”号开头的预处理命令,如#include,宏定义命令#define等,这些预处理命令放在函数之外,一般放在源文件的前面,称为预处理部分。7.2宏定义7.2.1无参宏定义宏定义一般形式为:#define标识符字符串例如:#definePI3.1415926宏定义的作用是在本程序文件中用指定的标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。这

2、种方法使用户能以一个简单的名字代替一个长的字符串.这个标识符(名字)称为“宏名”在预编译时将宏名替换成字符串的过程称为宏替换或宏展开.#define是宏定义命令。【例7.1】不带参数宏的使用程序员输入的源程序预处理(宏替换)后的新源程序#include#definePI3.1415926voidmain(){floatl,s,r,v;printf("inputradius:");scanf("%f",&r);l=2.0*PI*r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf("l=%10.4f",l);printf("s=%10.4f",

3、s);printf("v=%10.4f",v);}#includevoidmain(){floatl,s,r,v;printf("inputradius:");scanf("%f",&r);l=2.0*3.1415926*r;s=3.1415926*r*r;v=4.0/3*3.1415926*r*r*r;printf("l=%10.4f",l);printf("s=%10.4f",s);printf("v=%10.4f",v);}(1)宏名一般习惯用大写字母表示,以便与变量名相区别。但这并非规定,也可用小写字母。(2)使用宏名代替一个字符串,可以减少

4、程序中重复书写某些字符串的工作量。宏定义是用宏名代替一个字符串,只作简单置换,不作正确性检查。如有错误,只能在编译已被宏展开后的源程序时发现。说明:(3)宏定义不是说明或C语句,不必在行末加分号。如果加了分号则会连分号一起进行置换。(4)#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。可以用#undef命令终止宏定义的作用域。说明:#defineG9.8_______voidmain()↑{G的有效范围…}-----↓----#undefGf1(){…}在f1函数

5、中,G不再代表9.8。这样可以灵活控制宏定义的作用范围。(5)宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。说明:【例7.2】#defineOK100voidmain(){printf("OK");printf("");}(6)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名,在宏展开时由预处理程序层层代换。说明:例如:#definePI3.1415926#defineSPI*y*y对语句printf(“%f”,S);在宏替换后变为:printf(“%f”,3.1415926*y*y);(7)对“输出格式”作宏定义,可以减少书定麻烦。说明:【例7.3】中就采用

6、了(7)那种方法。#include#definePprintf#defineD"%d"#defineF"%f"voidmain(){inta=5,c=8,e=11;floatb=3.8,d=9.7,f=21.08;P(DF,a,b);P(DF,c,d);P(DF,e,f);}执行结果:53.80000089.7000001121.080000下面叙述中正确的是()。A.宏定义是C语句,所以要在行末加分号B.可以使用#undef命令来终止宏定义的作用域C.在进行宏定义时,宏定义不能层层嵌套D.对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换B7.

7、2.2带参数的宏定义作用:不是进行简单的字符串替换,还要进行参数替换。带参数的宏定义一般形式为:#define宏名(形参表)字符串带参宏调用的一般形式为:宏名(实参表);其中:宏名同不带参的宏名,习惯用大写字母。形参表由一个或多个参数构成,注意形参与函数形参的区别:参数只有参数名,没有数据类型,只作替换,不分配内存空间。例如:#defineM(y)y*y+3*y…k=M(5);…在宏调用时,用实参代替形参y,经预处理宏展开后的语句为:K=5*5+3*5【例

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。