《C语言程序设计》课件第八章11.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《C语言程序设计》课件第八章11.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 课件 第八 11
- 资源描述:
-
1、宏定义宏定义 文件包含文件包含 条件编译条件编译 基本内容:基本内容:宏定义宏定义:是用一个指定的名字来代表一个常量是用一个指定的名字来代表一个常量表达式或字符串,其复杂形式是带参数的表达式或字符串,其复杂形式是带参数的宏。宏。(1)(1)程序中常用到一些特别的量,如用程序中常用到一些特别的量,如用0 0或或1 1作条件判别作条件判别 量,用量,用-1-1表示文件结束,用表示文件结束,用21474836472147483647表示最大表示最大4 4 字节整数字节整数2 23131-1-1等,它们都常定义成宏名。如:等,它们都常定义成宏名。如:#define NO 0#define NO 0#d
2、efine YES 1#define YES 1#define EOF(-1)#define EOF(-1)(2)(2)宏名可定义为具有一定精度要求的宏名可定义为具有一定精度要求的floatfloat和和doubledouble类类 型值。如:型值。如:#define PI 3.14159#define PI 3.14159#define EPS 1.0e-9#define EPS 1.0e-9(3)宏名还可以定义为数组中最后一个元素的地址&aMAX-1。如:#define MAX 100#define MAXP&aMAX-1(4)利用宏定义还可以把C语言语句的书写格式写成程 序员习惯的格式。
3、如:预处理后:#define then end#define begin else if(ab)#define end;begin a:=b;#define:=c:=b;d:=(a+b)/2;.D:=(d*c)/2;if(ab)then end else begin c:=b;a:=b;d:=(a+b)/2;d:=(a+b)/2;利用宏定义将C写成PASCAL的格式(1)宏名习惯上用大写字母表示,表示与一般变量名相 区别。但这并非C语言的规定,也可以用小写字母。(2)宏定义不是C语句,不必在行末尾加分号。若加,则会连分号一些进行置换,可能会出现语法错误。(3)字符串或字符常量中若有与宏名重名的
4、,预处理程 序一律不将它们作为宏名对待,更不进行代换。例如:#define YES 1 printf(“YESn”);输出的是YES,而不是1。(4)在宏定义中,可以引用已经定义的宏名,可以进 行层层代换。例如:#define PI 3.14159#define R 3.0#define L 2*PI*R#define S PI*R*R(5)宏定义的有效范围为定义点到该源文件结束,还可 以用#undef命令终止宏定义的作用域。例如:#define P 100 main()#undef P f1()l 所谓带参数的宏定义是指宏名后带有形参表的宏定义。格式:#define 宏名(形参表)表达式 说
5、明:宏定义中的形参在以后的程序中将以实参替换。置换过程:在程序中若有带参数的宏,则按#define命令行中指定的字符串从左到右进行置换。如果串中包含宏中的形式参数,则将程序语句中相应的实参(可以是常量、变量或表达式)代替形参,如果宏定义中的字符串中的字符不是参数字符,则原样保留。(1)带参数的宏定义常用来代替一些简短的表达式。例如:#define MIN(x,y)(xy)?x:y)(2)带参数的宏定义也可以直接引用已定义过的宏定 义,即实现宏定义的嵌套。例如:#define SQ(x)(x*x)#define FIFTH(x)CUBE(x)*(SQ(x)预处理程序对每个宏名展开代换,直到件中不
展开阅读全文