第6章编译预处理综述ppt课件.ppt

第6章编译预处理综述ppt课件.ppt

ID:59017163

大小:110.00 KB

页数:31页

时间:2020-09-26

第6章编译预处理综述ppt课件.ppt_第1页
第6章编译预处理综述ppt课件.ppt_第2页
第6章编译预处理综述ppt课件.ppt_第3页
第6章编译预处理综述ppt课件.ppt_第4页
第6章编译预处理综述ppt课件.ppt_第5页
资源描述:

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

1、第6章编译预处理目的与要求6.1文件包含处理6.2宏定义6.3条件编译本章小结目的与要求通过本章学习,应理解编译预处理的概念。理解“文件包含”的概念,掌握文件包含命令的使用方法。理解宏定义的概念,掌握不带参数的宏定义命令和带参数的宏定义命令的使用方法。理解条件编译的概念,初步掌握条件编译命令的使用方法。编译预处理概念1.编译预处理的概念“编译预处理”是指在对源程序进行通常的编译之前,根据编译预处理程序所提供的预处理命令对源程序作相应的处理。2.C++的编译预处理命令C++的预处理命令主要有以下三种:(1)文件包含(2)宏定义(3)条件编译6.1文件

2、包含处理1.定义:将另一个头文件(.h)内容包含到本源文件中来称为文件包含处理。2.文件包含命令#include(1)命令格式:#include“文件名”或:#include<文件名>(2)功能:将“文件名”所指文件内容读到当前文件中。作为当前文件的一个组成部分,即把文件的内容替代该#include命令行。文件包含处理【例6.1】输入两个整数a和b,输出其中较大的一个数。说明:(1)#include只能指定一个被包含文件。(2)文件包含是可以嵌套的。(3)在#include命令中,文件名可以用双引号或尖括号括起来。(4)文件包含命令可出现在程序中的

3、任何位置。例程文件包含处理文件包含的使用:(1)在程序文件要用到C++的库函数时,必须把含有该库函数的头文件包含到本文件中。(2)在设计一个大型程序时,可将程序公用的一些数据结构、输出格式定义成头文件,然后在相应的处理程序中,用文件包含命令将相应的头文件包含进来。【例6.2】求矩形的对角线的长、周长和面积。例程6.2宏定义定义:用指定标识符(宏名)来代表一个字符串称为宏定义。6.2.1不带参数的宏定义1.命令格式:#define<宏名>字符串2.功能:用宏名代替字符串。3.宏展开:在编译预处理时将宏名替换成字符串的过程称为“宏展开”。【例6.3】求

4、圆的周长、面积及圆球的体积。例程不带参数的宏定义说明:(1)宏名一般习惯用大写字母表示,以便与变量名相区别;(2)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量;(3)宏定义是用宏名代替一个字符串,仅作简单的替换;不作正确性检查;(4)宏定义不是C++语句,不必在行末加分号。如果加了分号,则会连同分号一起进行替换;(5)宏定义可出现在程序中的任何位置。通常,将宏定义放在源程序文件开始部分。宏名的作用域为从宏定义开始到本源程序文件结束。不带参数的宏定义(6)可以用#undef命令终止宏名的作用域,其一般格式为:#undef标识符(7

5、)在进行宏定义时,可以引用已定义的宏名,即宏名可以层层替换。(8)对程序中用双引号括起来的字符串内的字符,即使与宏名相同,也不进行替换。(9)在同一个作用域内,同一个宏名不能定义两次或两次以上;(10)宏定义与定义变量的含义不同,只作字符替换,不分配内存空间。【例6.4】求圆的周长、面积及圆球的体积。例程6.2.2带参数的宏定义1.命令格式:#define<宏名>(参数表)字符串2.功能:将带形参的字符串定义为一个带形参的宏名。3.宏调用:在编译预处理时将带实参的宏名用指定的字符串进行替换,并用实参替换形参,这被称为“宏调用”。【例6.5】求圆的周

6、长、面积及圆球的体积。例程带参数的宏定义说明:(1)带参数宏调用时,只是将语句中宏名后面括号内的实参代替#define命令行中的形参。当宏调用中包含的实参有可能是表达式时,在宏定义时要用括号把形参括起来,以避免错误。(2)在宏定义时,在宏名与带参数的括号之间不能有空格,否则将空格以后的全部字符都作为无参宏所定义的字符串。带参数的宏与函数的区别注意:带参数的宏和函数的区别:(1)两者的定义形式不一样。宏定义中只给出形式参数,而不要指明每一个形式参数的类型;而在函数定义时,必须指定每一个形式参数的类型;(2)函数调用是在程序运行时进行的,分配临时的内存

7、单元;而宏调用则是在编译前进行的,并不分配内存单元,不进行值的传递处理。(3)函数调用时,先求实参表达式的值,然后将值代入形参;而宏调用时只是用实参简单地替换形参;(4)函数调用时,要求实参和形参的类型一致;而宏调用时不存在类型问题;(5)使用宏次数多时,宏展开后源程序变长,因为每一次宏展开都使源程序增长;而函数调用不使源程序变长。6.3条件编译定义:对源程序的一部分内容指定编译条件称为条件编译。条件编译命令有三种格式。1.格式1(1)格式:#ifdef标识符程序段1〔#else程序段2〕#endif(2)功能:当所指定的标识符已经被#define

8、命令定义过,则在程序编译阶段只编译程序段1;否则编译程序段2,或不编译。条件编译2.格式2(1)格式:#ifndef标识符

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

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

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