c++程序设计实践教程(中)ppt

c++程序设计实践教程(中)ppt

ID:36325719

大小:903.50 KB

页数:261页

时间:2019-05-09

c++程序设计实践教程(中)ppt_第1页
c++程序设计实践教程(中)ppt_第2页
c++程序设计实践教程(中)ppt_第3页
c++程序设计实践教程(中)ppt_第4页
c++程序设计实践教程(中)ppt_第5页
资源描述:

《c++程序设计实践教程(中)ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序设计实践教程(中)第7章编译预处理和程序的多文件组织7.1宏定义7.2文件包含7.3条件编译7.4程序的多文件组织作业:4/7/8编译预处理命令:以#开头,以回车结束,独占一行;可出现在程序中的任何位置,常置于源程序的开始;不属于C++的语法范畴。常用编译预处理命令:宏、文件包含和条件编译。编译预处理:编译源程序前,先用预处理程序处理源程序中的编译预处理命令,并过滤源程序中的注释和多余空白符,生成一个完全用C++语言表达的临时源程序文件供编译系统处理。7.1宏定义宏定义:用预处理命令#define实现。宏定义分为:⑴带参数的宏定义;⑵不带参数的宏定义。7.1.1不带参数

2、的宏定义格式:#define标识符字符或字符串其中,标识符称为宏名。举例:#definePI3.1415926其作用是将宏名PI定义为字符串3.1415926。在编译预处理时,将该命令后所有出现PI处均用3.1415926替换。这种替换称为“宏替换”或“宏扩展”或“宏展开”。宏替换的本质是字符串替换。又如:#definePROMPT"面积为:"例7.2宏定义的使用。#include#definePI3.1415926#defineR2.8#defineAREAPI*R*R//A#definePROMPT"面积="voidmain(void){cout<

3、ROMPT<

4、到不正确的结果或编译时出现语法错误。如:#defineA3+5#defineBA*Acout<#defineA"欢迎"#defineB"A参观展览会"voidmain(void){cout<<

5、B<<"!";}程序运行结果:A参观展览会!⑺在同一个作用域内,同一个宏名不允许重复定义。7.1.2带参数的宏定义带参数宏定义的形式:#define宏名(参数表)使用参数的字符或字符串带参宏定义在宏扩展时,要对宏名和参数做替换。带参数宏举例:#defineAREA(a,b)a*bb=AREA(2.0,7.8);宏定义中的参数称为形参。例如:宏AREA有参数a和b。宏调用:使用带参宏。在宏调用中给出的参数称为实参。带参宏扩展:先用实参替代宏定义中的形参,并将替代后的字符串替代宏调用。宏扩展仅作字符串替代,不作计算。举例:宏调用经宏扩展后为:b=2.0*7.8;带参宏说明⑴宏调用

6、中的实参若含表达式,则在宏定义中要用圆括号把形参括起来或在宏调用中把实参括起来,以免出错。例如:#defineAREA(a,b)a*bc=AREA(2+3,3+4);//Bc的值不为35,而是15。出错原因:因B行扩展后为:c=2+3*3+4;解决方法:①将B行的宏调用改写成:c=AREA((2+3),(3+4));②将宏定义改为:#defineAREA(a,b)(a)*(b)则B行经宏扩展后,成为:c=(2+3)*(3+4);方法②更好。⑵在宏定义时,宏名与左括号之间不能有空格。若在宏名后有空格,则将空格后的所有字符都作为无参宏所定义的字符串,而不作为形参。例如:#define

7、AREA(a,b)(a)*(b)则编译预处理程序认为无参宏AREA定义为“(a,b)(a)*(b)”,而不将(a,b)作为参数。⑶当一个宏定义多于一行时必须使用续行符“”,即在按换行符(Enter键)之前先输入一个“”。例如:#defineAREA(a,b)(a)*(b)⑷带参宏主要用来取代功能简单、代码短小、运行时间极短、调用频繁的程序代码,但因其使用时有一些副作用,故C++引入内联函数以取代带参宏。带参宏与函数有些相似,但两者有本质区别⑴定义形式不同。宏定义只给出形参,

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

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

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