C语言程序设计 教学课件 作者 王玉 主编第7章.ppt

C语言程序设计 教学课件 作者 王玉 主编第7章.ppt

ID:50298214

大小:512.00 KB

页数:13页

时间:2020-03-07

C语言程序设计 教学课件 作者 王玉 主编第7章.ppt_第1页
C语言程序设计 教学课件 作者 王玉 主编第7章.ppt_第2页
C语言程序设计 教学课件 作者 王玉 主编第7章.ppt_第3页
C语言程序设计 教学课件 作者 王玉 主编第7章.ppt_第4页
C语言程序设计 教学课件 作者 王玉 主编第7章.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 王玉 主编第7章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章编译预处理第7章编译预处理本章主要内容7.1宏定义7.2文件包含7.3条件编译7.1宏定义7.1.1不带参数的宏定义7.1.2带参数的宏定义7.1.1不带参数的宏定义不带参数的宏定义是用一个指定的标识符(宏名)来代表一个字符串(宏体)。它的一般形式为:#define宏名宏体其中,#define是宏定义命令。宏名为C语言标识符,一般习惯用大写字母表示。宏体可以含任意字符。预编译时,将程序中所有出现的宏名替换成宏体的过程称为“宏展开”。对于宏定义还要说明以下几点:①宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名。②宏

2、名在源程序中若用引号括起来,则预处理程序不对其作宏代换。③宏定义不是说明或语句,在行末不必加分号。④#define命令出现在程序中,宏名从定义命令之后,到本源文件结束。⑤可用宏定义表示数据类型,使书写更为方便。⑥对“输出格式”作宏定义,可以减少书写麻烦。7.1.2带参数的宏定义带参数的宏定义的一般形式为:#define宏名(形式参数表)宏体其中,形式参数表由一个或多个形参组成,形参之间用逗号分隔;与函数调用相似,引用该宏时,宏名后括号内出现的是实际参数。引用的一般形式为:宏名(实际参数表)使用带参数的宏定义时要注意:①对带参数的宏展开

3、时,只是将语句中宏名后面括号内的实参字符串代替宏体中的形参。②宏定义时,宏名与其后的左括号之间不应加空格,否则该宏将被作为一个不带参数的宏,把空格以后的字符都作为宏体进行替代。③带参数的宏在形式上与函数很相似,然而,二者在本质上并不相同。主要区别有:第一,在带参数的宏定义中,形参是标识符,不分配内存单元,因此不必作类型定义。第二,宏展开是用宏体去替换宏名,程序中使用宏次数多时,宏展开后源程序会很长;而函数调用不会增加程序的长度。第三,宏展开是在预编译时进行的,只作简单的字符替换,不占运行时间;而函数调用是在程序运行时处理的,需要分配临

4、时单元,进行值的传递处理,保留现场等等。第四,宏替换还有可能产生函数调用所没有的副作用。7.2文件包含文件包含命令行的一般形式为:#include″文件名″或#include<文件名>文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。使用文件包含命令时要注意:①一个#include命令只能指定一个被包含的文件,如果包含n个文件,就要用n个文件包含命令。②文件包含允许嵌套。7.3条件编译条件编译就是对程序中的某些内容在满足一定条件时才进行编译,不满足条件就不进行编译。条件编译

5、有以下三种格式:(1)格式一#ifdef标识符源程序部分1#else源程序部分2#endif其作用是:当“标识符”已经被定义时,对“源程序部分1”进行编译,否则对“源程序部分2”进行编译。其中,#else部分根据需要可以省略。(2)格式二#ifndef标识符源程序部分1#else源程序部分2#endif此条件编译命令与第一种类似,只是当“标识符”没有被定义时,对“源程序部分1”进行编译,否则对“源程序部分2”进行编译。(3)格式三#if表达式源程序部分1#else源程序部分2#endif该条件编译的作用是,当“表达式”为“真”(值非0

6、)时,对“源程序部分1”进行编译,否则对“源程序部分2”进行编译。注意:表达式的值是在编译阶段求值的,因此不能包含变量,只能是常量表达式或利用#define命令定义的符号常量。条件编译常用于下述几种情况:①为使一个源程序适用于不同情况,可以使用条件编译给定不同情况下应该进行编译的程序段。②在调试程序时使用条件编译。③有些情况下,可使用条件编译来代替if语句。

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

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

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