C语言课件:第九章预处理命令.ppt

C语言课件:第九章预处理命令.ppt

ID:52472126

大小:340.37 KB

页数:14页

时间:2020-04-08

C语言课件:第九章预处理命令.ppt_第1页
C语言课件:第九章预处理命令.ppt_第2页
C语言课件:第九章预处理命令.ppt_第3页
C语言课件:第九章预处理命令.ppt_第4页
C语言课件:第九章预处理命令.ppt_第5页
资源描述:

《C语言课件:第九章预处理命令.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章预处理命令9.1编译预处理9.2“文件包含”处理9.3条件编译9.1编译预处理“编译预处理”是C与其它高级语言的一个重要区别。宏定义;文件包含;条件编译;1.宏定义1)不带参数的宏定义用指定的标识符(宏名)代表一个常量或字符串:#define标识符常量/字符串它们是:例9.1求正圆锥体的底周长、底面积和它的体积。#definePI3.1415926main(){floatl,s,r,v;scanf(“%f”,&r);l=2.0PIr;s=PIrr;v=4.0/3PIrrr;printf(“l=%10

2、.4fs=%10.4fv=%10.4f”,l,s,v);}宏名PI用大写,行末无分号宏名的有效范围为该宏定义命令之后至本源文件结束。通常,宏定义命令一般写在文件开头或函数之前作为该文件的一部分。可以用#undef命令终止宏定义的作用域。如:#defineG9.8 main() {}进行宏定义时,可以引用已定义的宏名,层层置换。对程序中用双引号括起来的字符串,即使与宏名相同也不会被置换。G的作用范围#undefG floatf()2.带参数的宏定义语句形式:#define宏名(形参表)表达式例9.3

3、#definePI3.1415926#defineS(r)PIrrmain(){floata,area;a=3.6;area=S(a);printf(“r=%farea=%f”,a,area);}area=3.1415926aa,但不会置换a为3.6对带参数的宏定义的置换展开是用“表达式”对等的置换“形参表”中的参数。上例中的“”是不会被置换的。若将area=S(a)改写成area=S(a+2),将置换为:area=PIa+2a+2,而不是:area=PI(a+2)(a+2)。若要达到后者之

4、目的,则应将宏定义命令改写为:#defineS(r)PI(r)(r)宏名与括号之间不得有空格,因为宏名与表达式之间的分隔符为空格。如果用#defineS(r)PIrr的话,则被置换为area=(r)PIrr(a)宏展开并不进行值的传递,即不求表达式的值,也没有“返回值”的概念。宏不存在类型问题,宏名无类型,参数也无类型,表达式可以是任何类型。定义带参数的宏,可以实现一些简单的函数功能。如:#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta,b,c,t;t=MAX(a

5、+b,c+d);}注:这里的t展开后为t=(a+b)>(c+d)?(a+b):(c+d)如果第一行写成:#defineMAX(x,y)x>y?x:y则这里的t展开后为t=a+b>c+d?a+b:c+d因为置换展开是用“表达式”对等的置换“形参表”中的参数9.2“文件包含”处理在C中可以用#include命令实现一个文件包含另一个文件。语句形式:#include“文件名”例:#include“stdio.h”#defineN2#defineMN+1#defineNUM(M+1)M/2main(){inti,n=1;fo

6、r(i=1;i<=NUM;i++){n++;printf(“%2d”,n);}printf(“”);}输出结果:12345678NUM被代换展开后为:(2+1+1)2+1/2一个include命令只能指定一个被包含文件,如果要包含n个文件,则要用n个include命令。如果“文件1”包含“文件2”,而“文件2”又包含“文件3”,则可在“文件1”中使用两个include命令。即:文件file1.c#include“file3.h”#include“file2.h”file3.h应出现在file2.h之前文件包含

7、可以嵌套。即一个被包含文件中又可以包含另一个文件。如:文件file1.c#include“file2.h”文件file2.c#include“file3.h”在#include命令中,文件名既可用双引“”号也可用尖括号<>括起来。但用双引号更方便系统查找被包含的文件。9.3条件编译1.条件编译的语句形式其作用是:如果“标识符”已定义,则编译“程序段1”,否则编译“程序段2”。1)#ifdef标识符程序段1#else程序段2#endif“标识符”一般为#define命令所定义。其中的“程序段1”或“程序段2”可以

8、是命令,也可以是语句或语句组。#else部分可有可无。所谓“标识符已定义”是无论“标识符”定义为什么内容。用条件编译的作用是缩短编译时间,减少目标程序的长度。例:#ifdefIBM_PC#defineINTEGER_SIZE16#else#defineINTEGER_SIZE32#endif其作用是:如果“标识

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

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

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