第7章编译预处理v1.ppt

上传人:本田雅阁 文档编号:2578610 上传时间:2019-04-11 格式:PPT 页数:16 大小:344.51KB
返回 下载 相关 举报
第7章编译预处理v1.ppt_第1页
第1页 / 共16页
第7章编译预处理v1.ppt_第2页
第2页 / 共16页
第7章编译预处理v1.ppt_第3页
第3页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7章编译预处理v1.ppt》由会员分享,可在线阅读,更多相关《第7章编译预处理v1.ppt(16页珍藏版)》请在三一文库上搜索。

1、1,第7章 编译预处理,2,内容提要,所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。主要包括以下几个内容: 文件包含 宏定义 条件编译,3,7.1 引言,特点: C 编译系统在编译前对程序中的预编译命令所进行的“预 处理” 所有此类命令均以 “#” 开头,4,文件包含是指:一个源文件可将另一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。 格式:include “包含文件名” 或 include 两种格式的区别仅在于: 使用双引号:系统首先到当前目录下查找被包含文件,如果没找到,再到系统指

2、定的“包含文件目录”去查找。 使用尖括号:直接到系统指定的“包含文件目录”去查找。一般地说,使用双引号比较保险。,7.2 预处理指令include:文件包含,5,7.3 预处理指令define:宏定义,在语言中,“宏”分为不带参数的宏和带参数的宏两种。,6, 不带参数的宏定义 #define 标识符 字符串 作用:用一个指定的标识符代表一个字符串。 带参数的宏定义 #define 宏名(参数表) 字符串 作用:带参数的字符串替换。,7.3 预处理指令define:宏定义,7,无参宏应用举例 #define M (a+b+c)/2 #include void main() int a,b,c,s

3、; printf(“input 3 number: “); scanf(“%d %d %d“, ,宏定义, 宏名一般用大写 行尾不加“;” 有效范围 : 定义之后到文件 结束。 编译时 标识符简单替换成字符串。,7.3.1 无参数宏,(a+b+c)/2;,8,无参宏的副作用 #define M a+b+c #include void main() int a,b,c,s; printf(“input 3 number: “); scanf(“%d %d %d“, ,运行时输入了:5 8 4 结果为:,s=15,#define M (a+b+c),在进行宏定义时,可以使用已定义的宏名 。 对双引

4、号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。,10,带参宏定义的一般格式 #define 宏名(参数表) 字符串,7.3.2 带参数宏,11,#define PI 3.1415 #define S(r) PI*r*r void main( ) float fArea, fRadius =3.6; fArea=S(fRadius); ,宏展开后 area=3.1415* fRadius * fRadius;,注意: 宏替换简单替换 若宏调用为 S(a+b) area=PI*a+b*a+b,S(a+b),将所有的宏参数都用括号围起来。 #define S(r) (PI)*(r)*(r

5、),12,带参数的宏和带参数的函数之间的主要区别,13,作用:减少被编译语句,最终减少目标文件长度。 商业软件公司广泛应用条件编译来提供和维护某一程序的许多顾客版本。 形式主要有三种。 1)#if 表达式 程序段1 #else 程序段2 #endif 表达式值为真,编译程序段1; 否则,编译程序段2,7.4 条件编译,14,2)#ifdef 标识符 程序段1 #else 程序段2 #endif 当标识符已被定义, 对程序段1编译; 否则,对程序段2编译。,3)#ifndef 标识符 程序段1 #else 程序段2 #endif 当标识符未被定义, 对程序段1编译; 否则,对程序段2编译。,注:

6、标识符用一般 #define 命令定义,7.4 条件编译,15,条件编译#if及# endif 【exp7_4.c】 # define MAX 100 /将MAX定义为100 #include void main() # if MAX99 printf(“compiled for array greater than 99n“); # endif ,7.4 条件编译,程序运行结果: compiled for array greater than 99,16,文件包含保护符: /* simple.h */ /* simple header that prevents multiple-declaration */ #ifndef SIMPLE_H #define SIMPLE_H #endif /* SIMPLE_H */,7.4 条件编译,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1