《C语言程序设计》课件第八章11.ppt
《《C语言程序设计》课件第八章11.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计》课件第八章11.ppt(22页珍藏版)》请在文库网上搜索。
1、6.7 6.7 编译预处理编译预处理 宏定义宏定义 文件包含文件包含 条件编译条件编译 基本内容:基本内容:6.7.1宏定义宏定义 宏定义宏定义:是用一个指定的名字来代表一个常量是用一个指定的名字来代表一个常量表达式或字符串,其复杂形式是带参数的表达式或字符串,其复杂形式是带参数的宏。宏。1.1.符号常量定义符号常量定义(1)(1)程序中常用到一些特别的量,如用程序中常用到一些特别的量,如用0 0或或1 1作条件判别作条件判别 量,用量,用-1-1表示文件结束,用表示文件结束,用21474836472147483647表示最大表示最大4 4 字节整数字节整数2 23131-1-1等,它们都常定
2、义成宏名。如:等,它们都常定义成宏名。如:#define NO 0#define NO 0#define 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#defin
3、e MAXP&aMAX-1(4)利用宏定义还可以把C语言语句的书写格式写成程 序员习惯的格式。如:预处理后:#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
4、语句,不必在行末尾加分号。若加,则会连分号一些进行置换,可能会出现语法错误。(3)字符串或字符常量中若有与宏名重名的,预处理程 序一律不将它们作为宏名对待,更不进行代换。例如:#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()#und
5、ef P f1()2.带参数的宏定义l 所谓带参数的宏定义是指宏名后带有形参表的宏定义。格式:#define 宏名(形参表)表达式 说明:宏定义中的形参在以后的程序中将以实参替换。置换过程:在程序中若有带参数的宏,则按#define命令行中指定的字符串从左到右进行置换。如果串中包含宏中的形式参数,则将程序语句中相应的实参(可以是常量、变量或表达式)代替形参,如果宏定义中的字符串中的字符不是参数字符,则原样保留。常见的带参数宏定义的用法:(1)带参数的宏定义常用来代替一些简短的表达式。例如:#define MIN(x,y)(xy)?x:y)(2)带参数的宏定义也可以直接引用已定义过的宏定 义,即
6、实现宏定义的嵌套。例如:#define SQ(x)(x*x)#define FIFTH(x)CUBE(x)*(SQ(x)预处理程序对每个宏名展开代换,直到件中不再有宏名为止。(3)带参数的宏定义可以简化格式打印函数printf的格 式,提高程序的可读性。例如:#define NL putchar(n)#define PR(for,val)printf(val=%fort,val)#define PRINT1(f,x)PR(f,x);NL PRINT1(d,a+b)其宏展开为:PR(d,a+b);NL 又进一步展开为:printf(a+b=%dt,a+b);putchar(n)(1)在宏展开后容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 课件 第八 11