C程序设计09.ppt

C程序设计09.ppt

ID:48061245

大小:743.00 KB

页数:32页

时间:2020-01-13

C程序设计09.ppt_第1页
C程序设计09.ppt_第2页
C程序设计09.ppt_第3页
C程序设计09.ppt_第4页
C程序设计09.ppt_第5页
资源描述:

《C程序设计09.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2021/10/3第九章编译预处理1第九章编译预处理C语言具有编译预处理的功能所谓编译预处理,指在编译之前先执行一些特殊的命令(以#开头的命令)C的预处理功能包括:宏定义文件包含条件编译2021/10/3第九章编译预处理2第一节宏定义宏定义不带参数的宏定义带参数的宏定义2021/10/3第九章编译预处理3一、不带参数的宏定义不带参数的宏定义指定一个标识符(宏名)用来代表一部分字符如:#definePI3.1415926#defineNUMBER100宏展开编译预处理时用字符串替换宏名举例:程序中s=PI*r*r;则替换为:s=3.1415926*r*r

2、然后编译2021/10/3第九章编译预处理4宏的作用:简化书写、易于阅读、便于修改#definePI3.1415926536intmain(){floatr,l,s;scanf(“%f”,&r);s=r*r*PI;l=2*PI*r;printf(“s=%f,l=%f”,s,l);return0;}2021/10/3第九章编译预处理5如:排序(某班考试分数排序,人数变化时)intmain(){inti,j,k,a[30];/*人数为30*/for(i=0;i<=29;i++)scanf(“%d”,&a[i]);for(i=0;i<=29;i++){k

3、=i;for(j=0;j<=29;j++)…………}return0;}2021/10/3第九章编译预处理6下面的程序在人数变化时易于修改#defineNUMBER30intmain(){inti,j,k,x,a[NUMBER];for(i=0;i<=NUMBER-1;i++)scanf(“%d”,&x);for(i=0;i<=NUMBER-1;i++){k=i;for(j=0;j<=NUMBER-1;j++)…………}……return0;}2021/10/3第九章编译预处理7注意事项:习惯上,宏名用大写字母表示(区别于变量)宏展开时仅仅将宏名用字符串替

4、换,不作任何检查,也不计算其值如:#definePI3.i415926程序中s=PI*r*r;预处理时置换成:s=3.i415926*r*r;又如:#defineR3+2程序中:s=3.141593*R*R;替换为:s=3.141593*3+2*3+22021/10/3第九章编译预处理8修改方法有两种:#defineN(3+2)s=3.141593*N*N#defineN3+2s=3.141593*(N)*(N)宏定义不是语句,不能加分号,否则,分号也被当作是字符串的一部分如:#definePI3.1415926;程序中s=PI*r*r;预处理时置换成

5、:s=3.1415926;*r*r;宏定义通常定义在函数的外面,其作用范围是:从定义处开始到文件末2021/10/3第九章编译预处理9可以用#undef命令终止宏定义的作用如:#defineG9.8…………#undefG…………宏可以嵌套定义如:#defineR3.0#definePI3.141593#defineL2*PI*R#defineSPI*R*R2021/10/3第九章编译预处理10程序中用双引号括起来的字符串,其中的字符即便与宏名相同,也不置换(不作宏处理)如:#defineNUMBER50intx;……printf(“THENUMBERI

6、S%d”,x);……2021/10/3第九章编译预处理11二、带参数的宏定义带参数的宏定义指定一个带参数的宏名用来代表一部分字符,字符中含有参数如:#defineS(a,b)a*b宏展开编译预处理时用字符串替换宏名,用实参替换虚参举例:程序中area=S(3,2);则替换为:area=3*2;2021/10/3第九章编译预处理12注意事项:习惯上,宏名用大写字母表示(区别于变量)宏展开时仅仅将宏名用字符串替换,不作任何检查,也不计算其值如:#defineS(a)a*a程序中:s=S(x+y);替换为:s=x+y*x+y;/*修改方法有两种*/若双引

7、号中的字符和虚参相同,TurboC不作替换2021/10/3第九章编译预处理13如:#definePRINT(V)printf(“V=%d”,V)intmain(){inta,b;a=1;b=2;PRINT(a);/*printf(“V=%d”,a);*/PRINT(b);/*printf(“V=%d”,b);*/return0;}设计者希望输出:a=1b=2实际输出结果:V=1V=22021/10/3第九章编译预处理14带参数的宏和函数的比较:宏是在预编译时展开的,而函数是程序运行时调用的宏展开时仅仅作简单的字符串替换和参数替换,既不给参

8、数分配单元,也不求解实参的值使用宏可以减少源文件的书写,但不能缩短执行代码(对于最终的.exe

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

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

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