C语言培训教材课件第6章.ppt
《C语言培训教材课件第6章.ppt》由会员分享,可在线阅读,更多相关《C语言培训教材课件第6章.ppt(20页珍藏版)》请在三一办公上搜索。
1、2005年3月,1,第6章 编译预处理,2005年3月,2,主要内容,编译预处理多文件程序的调试方法条件编译,2005年3月,3,源文件*.c,运行文件*.exe,编译,编译,编译,目标文件*.obj,连接,编译,连接,连接,编译预处理包括:宏定义 文件包含 条件编译,6.1 编译预处理,2005年3月,4,6.1 编译预处理(续),main()float r,s,c;scanf(“%f”,?,如何修改圆周率,2005年3月,5,#define 宏名 字符串,宏定义的功能:在进行编译前,用字符串原样替换程序中的宏名。这个替换过程称为“宏替换”或“宏展开”,字符串也称为替换文本。,命令的一般格式
2、:,6.1.1 不带参数的宏定义,6.1 编译预处理(续),2005年3月,6,6.1 编译预处理(续),例如:,#define PI 3.14main()float r,s,c;scanf(“%f”,替换,3.14,3.14,编 译,2005年3月,7,6.1 编译预处理(续),为了增加程序的可读性,建议宏名用大写字母,其他的标识符用小写字母。双引号中有与宏名相同的字符串不进行替换。已经定义的宏名可以被后定义的宏名引用。在预处理时将层层进行替换。,说明:宏定义的作用域是从定义处开始到源文件结束,但根据需要可用undef命令终止其作用域。形式为:,#undef 宏名,2005年3月,8,【例6
3、.1】不带参数的宏定义。,源程序:#define PI 3.14#define S PI*r*r#define V 4*S*r/3main()float r;printf(nInput r:);scanf(%f,编译预处理后的程序:main()float r;printf(nInput r:);scanf(%f,S,V,S,V,2005年3月,9,命令的一般形式,6.1.2 带参数的宏定义,#define 宏名(形参表)字符串,功能:在编译预处理时,把源程序中所有带参数的宏名用宏定义中的字符串替换,并且用宏名后圆括号中的实参替换字符串中的形参。,例如:#define MAX(X,Y)(X)(Y
4、)?(X):(Y),6.1 编译预处理(续),2005年3月,10,6.1 编译预处理(续),【例6.30】带参数的宏定义。#define MAX(x,y)(x)(y)?(x):(y)main()printf(%dn,a,b,MAX(a,b);printf(%dn,MAX(a+m,b+n);,分两次替换:将宏名MAX(a,b)替换成字符串(x)(y)?(x):(y)。用实参a替换形参x,实参b替换形参y。程序中的两个printf语句被展开为:printf(%dn,(a)(b)?(a):(b);printf(%dn,(a+m)(b+n)?(a+m):(b+n);,2005年3月,11,6.1 编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 培训教材 课件
链接地址:https://www.31ppt.com/p-5426277.html