讲编译预处理.ppt

讲编译预处理.ppt

ID:56437075

大小:208.00 KB

页数:23页

时间:2020-06-18

讲编译预处理.ppt_第1页
讲编译预处理.ppt_第2页
讲编译预处理.ppt_第3页
讲编译预处理.ppt_第4页
讲编译预处理.ppt_第5页
资源描述:

《讲编译预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章编译预处理本章主要内容1.掌握无参宏定义和带参宏定义的方法2.掌握文件包含命令的形式和文件包含的实现过程3.了解条件编译命令C的源程序预处理编译目标程序(*.C)_______________(*.OBJ)编译系统中有:预处理程序编译程序宏替换#defineN20文件包含#include条件编译if(...)C中的预处理命令分类宏定义有两种类型:字符串替换和带参数的宏替换1字符串宏替换功能:在预处理时,将程序中宏定义之后出现的所有的宏名,用宏替换体代替。宏替换名宏替换体例如:#definePI3.14159格式:#de

2、fine标识符 字符串C的编译程序调用预处理程序检查有否宏名,若有,用宏替换体将其替换,完成之后,将替换后的源程序交该编译程序。8.1宏定义用途:常用的符号常数PI=3.14159自然对数的底:2.71828数组的长度#defineN10/*编译之前用10替换所有的N*/…….inta[N]说明:通常放在程序开头,不加分号是代替,不是赋值(不作语法检查)可将多个语句或表达式定义为一个宏替换区别变量和关键字,习惯用大写#defineR3.0#definePI3.145926#defineL2.0*PI*R#defineSPI*R*R双引号中的不

3、替换有效范围,从定义开始到程序结尾例:#definePI3.14159main(){printf(“PI=%f”,PI);}结果:PI=3.14159main(){printf(“PI=%f”,”PI”);}可以嵌套,后定义的宏可以包含先定义的宏名结果:PI=PI2带参数的宏定义带参数的宏不仅能进行字符串代替,而且还进行参数代换。格式:#define宏名(参数表)表达式功能:带参数的宏将一个带形参的表达式定义为一个带参数的宏名,预处理程序对程序中所有带实参表的宏名进行宏展开替换,用表达式代替宏名,用参数表中的实参代替表达式中对应的形参

4、。例:#defineS(a,b)a*b程序中S(3,2)3*2用途:用带参数的宏可以代表一些简短的表达式,提高程序执行的效率。*宏定义可以嵌套*对常用的格式输入输出函数printf可以进行宏定义,使程序简化*宏名与参数的圆括号之间不能有空格s(a,b)说明:*宏定义命令要求在一行内写完,如换行,用“”表示下一行继续。*对于宏定义的形参要根据需要加上圆括号,以免发生运算错误[例1]使用有参宏替换求园的面积。#definePI3.1415926#defineS(r)PI*r*rmain(){floata=3.6,area;area=S(a);

5、printf(“r=%farea=%f”,a,area);}[例2]求下列语句的循环次数。#include“stdio.h”#defineN2#defineMN+1#defineNUM(M+1)*M/2main(){inti,n=0;for(i=1;i<=NUM;i++){n++;printf(“%d”,n);}}[例3]用两种方法计算1--10的平方(函数,宏)square(n)intn;{return(n*n);}main(){inti=1;while(i<=10)printf(“%d”,square(i++));}用函数方法

6、:用带参数的宏方法:#defineSQUARE(n)(n*n)main(){inti=1;while(i<=10)printf(“%d”,SQUARE(i++));}(i++)*(i++)实参的求值顺序是:从右向左第一次循环:i=12*1之后i为3第二次循环:i=34*3之后i为5第三次循环:i=56*5之后i为7第四次循环:i=78*7之后i为9…...1到22到3函数要求形参,实参有类型(相同)宏的形参,实参不要求类型,仅是符号函数需事先计算实参表达式的值,再代入形参宏展开中不求表达式的值,仅替换,没有值传递函数是在运行时处理宏是在编

7、译之前进行带参数的宏与函数的区别函数调用影响运行时间,源程序无变化宏展开影响编译时间,通常使源程序加长函数调用有一个返回值宏可以有多个结果例:求最大值。(答案中用U代表空格)#include#define___A___main(){floata,b,c,d;scanf("%f%f",___B___);c=MAX(a,b);d=MAX(3+a,4*b);printf("c=%f,d=%f.",c,d);}A:MAX(x,y)Ux>y?x:yB:&a,&b文件包含是指一个程序文件将另一个指定文件的全部内容包含进来。格式:#i

8、nclude<文件名>或:#include“文件名”8.2文件包含功能:用指定文件的全部内容代换该预处理行,C程序通过#include预处理,把一个指定的文件的内容

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

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

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