C语言板书9预处理课件_第1页
C语言板书9预处理课件_第2页
C语言板书9预处理课件_第3页
C语言板书9预处理课件_第4页
C语言板书9预处理课件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

第九章预处理命令§7.10预处理命令为提高编程效率,改善程序设计环境,ANSIC统一规定了在C源程序中加入一些“预处理命令”。但它们不是C语言的一部分。为与一般C语句相区别,这些命令以符号“#”开头C提供的预处理功能宏定义#define#undef文件包含#include条件编译#ifdef#else#endif一宏定义1不带参数的宏定义的一般形式#define标识符字符串例:#definePI3.1415926main(){floatl,s,r,v;printf(“inputradius:”);scanf(“%f”,&r);l=2.0*PI*r;s=PI*r*r;v=3.0/4*PI*r*r*r;printf(“l=%10.4f\ns=%10.4f\nv=%10.4f\n”,l,s,v);}被3.1415926代替功能:将程序中出现的所有标识符用字符串替换。标识符也称宏名。2带参数的宏定义的一般形式#define标识符(参数表)字符串功能:将程序中出现的所有标识符用字符串替换。字符串中包含在括弧中所指定的参数。标识符也称宏名。例1:#defineS(a,b)a*barea=S(3,2);area=3*2;等效于实参形参例2:#definePI3.1415926#defineS(r)PI*r*rarea=S(a+b);area=PI*a+b*a+b;等效于例3:#definePI3.1415926#defineS(r)PI*(r)*(r)area=S(a+b);area=PI*(a+b)*(a+b);等效于带参数的宏的说明:(只增加了第10条)(1)宏名一般用大写(2)提高程序的通用性,便于修改(3)宏定义在预处理时不作正确性检查(4)宏定义不是C语句,所以不要加分号,否则作为宏定义的一部分(5)通常定义在文件的开始地方,保证本文件可用(6)可以用#undef命令终止宏定义的作用域(7)可以引用已定义的宏名(8)程序中用双括号括起来的字符串内的字符不被替换(9)宏定义只作字符替换,不分配内存空间(10)标识符与参数表之间不能有空格例:#definePI3.1415926#defineCIRCLE(R,L,S,V)L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*Rmain(){floatr,l,s,v;scanf(“%f”,&r);CIRCLE(r,l,s,v);printf(“r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n”,r,l,s,v);}经过预编译后main(){floatr,l,s,v;scanf(“%f”,&r);l=2*PI*r;s=PI*r*r;v=4.0/3.0*PI*r*r*r;printf(“r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n”,r,l,s,v);}注意宏展开时,作为参数的括号不必展开例:#defineIEE(x,y)x+y展开宏时:printf(……,IEE(3,4)/IEE(5,6));应该是:3+4/5+6而不是:(3+4)/(5+6)二文件包含文件包含定义的一般形式#include“文件名”功能:将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。或#include<文件名>f1.c#include<f2.c>Af2.cB编译前编译后f1.cAB*.h或*.c三条件编译形式1:#ifdef标识符程序段1#else程序段2#endif可以没有条件编译:有时需要源程序中的部分内容只有在满足某些条件下时才进行编译,也就是对一部分内容指定编译的条件。好处:减少被编译的语句和程序目标代码,节省运行时间。功能:如果已经定义“标识符”,则编译程序段1,否则编译程序段2形式2:#ifndef标识符程序段1#else程序段2#endif可以没有功能:如果没有定义“标识符”,则编译程序段1,否则

温馨提示

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

评论

0/150

提交评论