c语言程序设计--宏.ppt_第1页
c语言程序设计--宏.ppt_第2页
c语言程序设计--宏.ppt_第3页
c语言程序设计--宏.ppt_第4页
c语言程序设计--宏.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言中的宏,宏替换,一、不带参数的宏替换 1.“预编译处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些预处理命令进行处理的过程 2.不带参数的宏定义命令形式如下: #define 宏名 替换文本 或#define 宏名,知识点: 预处理命令必须以一个“#”开头,末尾不得加“;” 宏名不得与程序中的其他名字相同,3.宏名与替换文本就是等量代换的关系,例: 1)#define PI 3.14 #define ADDPI (PI+1) #define TWO_ADDPI (2*ADDPI) X=TWO_ADDPI/2 =(2*ADDPI)/2 =(2*(PI+1)/2 =(2*(

2、3.14+1)/2,2) #define PI 3.14 #define ADDPI PI+1 #define TWO_ADDPI 2*ADDPI X=TWO_ADDPI/2 =2*ADDPI/2 =2*PI+1/2 =2*3.14+1/2,3) #define N 2 #define M N+1 #define NUM (M+1)*M/2 NUM=(M+1)*M/2 =(N+1+1)*N+1/2 =(2+1+1)*2+1/2,4.宏定义在一行写不下转下一行,在最后一个字符后紧跟一个“” 5.替换文本不能替换双引号或用户标识符中与宏名相同的字符串成分 例:#define YES 12 prin

3、tf(“YES”)中的YES是一个宏名,此处只能输出YES,而不能输出宏名YES所代表的文本12,二、带参数的宏替换,1.#define 宏名(形参表) 替换文本 注意: 形参表中只需要有形参名,不需要有类型名,可以有一个形参也可以有多个 2.等量代换 例:1)#define MU(x,y) (x)*(y) a=MU(5,2)=(5)*(2)=10 b=6/MU(a+3,a)=6/(a+3)*(a),2) #define MU(x,y) x*y a=MU(5,2)=5*2=10 b=6/MU(a+3,a)=6/a+3*a =6/10+3*10=30,#define PR(ar) printf(

4、“ar=%d”,ar) Main() int j,a=1,3,5,7,9,11,13,15,*p=a+5; for(j=3;j;j-) switch(j) case 1: case 2:PR(*P+);break; /printf (“ar=%d”,*p+); case 3:PR(*(-P); / printf(“ar=%d”,*(-p); 结果:ar=9 ar=9 ar=11,3)#define MIN(x,y) (x)(y)?(x):(y) i=10,j=15; k=10*MIN(i,j) =10*(10)(15)?(10): (15) =10015?10:15 =15,4)#define

5、 FUDGF(y) 2.84+y #define PR(a) printf(”%d”,(int) (a); #define PRINT1(a) PR(a);putchar(n); Y=PRINT1(FUDGF(5)*x) x=2 =PR(FUDGF(5)*x);putchar(n) = printf(“%d”,(int)(FUDGF(5)*x) );putchar(n) = printf(“%d”,(int)(2.84+5*2) );putchar(n) =printf(“%d”,12);putchar(n) =12,三、终止宏定义,格式:#undef 注意后面没有分号 例:#define P

6、I 3.14 main() #undef PI /在此之后,PI不再代表3.14 ,宏的定义,就是字符替换 #definedAB,宏的最主要作用是提高程序的可读性,提高编程效率 宏不是万能的 宏并不能让一个结构糟糕的程序变的不糟糕,却能够让一个结构还可以的程序看起来更漂亮。 使用不会增加可执行代码量 增加编译时间,宏的用法举例,代替有实际意义的常量 例子: #definePI 3.1416 #define TURE1 #define FALSE0,(1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。 (2) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。 (3) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。,如果不用宏。,宏使用的注意事项,注意宏替换后的结果是不是你想要的 #define abca+b+c INT8Ui,a,b,c;i=abc*3; 展开 i=a+b+c*3 而非i=(a+b+c)*3,所以加上括号!,如果是一个表达式,加

温馨提示

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

最新文档

评论

0/150

提交评论