C语言课件:第九章预处理命令.ppt_第1页
C语言课件:第九章预处理命令.ppt_第2页
C语言课件:第九章预处理命令.ppt_第3页
C语言课件:第九章预处理命令.ppt_第4页
C语言课件:第九章预处理命令.ppt_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章预处理命令,9.1编译预处理,“编译预处理”是C与其它高级语言的一个重要区别。,宏定义;,文件包含;,条件编译;,1.宏定义,1)不带参数的宏定义,用指定的标识符(宏名)代表一个常量或字符串:,#define标识符常量/字符串,它们是:,例9.1求正圆锥体的底周长、底面积和它的体积。,#definePI3.1415926main()floatl,s,r,v;scanf(“%f”,宏名PI用大写,行末无分号,宏名的有效范围为该宏定义命令之后至本源文件结束。,通常,宏定义命令一般写在文件开头或函数之前作为该文件的一部分。,可以用#undef命令终止宏定义的作用域。,如:,#defineG9.8main(),进行宏定义时,可以引用已定义的宏名,层层置换。,对程序中用双引号括起来的字符串,即使与宏名相同也不会被置换。,#undefGfloatf(),2带参数的宏定义,语句形式:,#define宏名(形参表)表达式,例9.3#definePI3.1415926#defineS(r)PIrrmain()floata,area;a=3.6;area=S(a);printf(“r=%fnarea=%fn”,a,area);,area=3.1415926aa,但不会置换a为3.6,对带参数的宏定义的置换展开是用“表达式”对等的置换“形参表”中的参数。上例中的“”是不会被置换的。,若将area=S(a)改写成area=S(a+2),,将置换为:,area=PIa+2a+2,,而不是:area=PI(a+2)(a+2)。,若要达到后者之目的,则应将宏定义命令改写为:#defineS(r)PI(r)(r),宏名与括号之间不得有空格,因为宏名与表达式之间的分隔符为空格。,如果用#defineS(r)PIrr的话,则被置换为area=(r)PIrr(a),宏展开并不进行值的传递,即不求表达式的值,也没有“返回值”的概念。,宏不存在类型问题,宏名无类型,参数也无类型,表达式可以是任何类型。,定义带参数的宏,可以实现一些简单的函数功能。,如:#defineMAX(x,y)(x)(y)?(x):(y)main()inta,b,c,t;t=MAX(a+b,c+d);,注:这里的t展开后为t=(a+b)(c+d)?(a+b):(c+d),如果第一行写成:#defineMAX(x,y)xy?x:y,则这里的t展开后为t=a+bc+d?a+b:c+d,因为置换展开是用“表达式”对等的置换“形参表”中的参数,9.2“文件包含”处理,在C中可以用#include命令实现一个文件包含另一个文件。,语句形式:,#include“文件名”,例:#include“stdio.h”#defineN2#defineMN+1#defineNUM(M+1)M/2main()inti,n=1;for(i=1;i=a,运行结果:CLANGUAGE,例2:#defineN2#defineMN+1#defineNUM2M+1main()inti;for(i=1;i(y)?(x):(y)main()inta=5,b=2,c=3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论