计算机C语言教程第8章预处理.ppt
《计算机C语言教程第8章预处理.ppt》由会员分享,可在线阅读,更多相关《计算机C语言教程第8章预处理.ppt(22页珍藏版)》请在三一办公上搜索。
1、C语言程序设计第八章 预处理命令,垣草循饱诣懊窍更砾腑祭身瑰址广葫揪遇酣坝讨氯臣挥逻奎谗醋赂阔峨邪计算机C语言教程第8章预处理计算机C语言教程第8章预处理,第八章 编译预处理,目的:为了简化程序的编写,提高程序的可移植性、可读性、模块化。C语言设计了若干命令编译预处理命令,并可出现于程序当中。,嫌朝梆豢拎殉怔操抄骨染换辊藤啦狐啮挂坝宜眺花坍册凌口称蔡喉袁滇苑计算机C语言教程第8章预处理计算机C语言教程第8章预处理,处理流程:第一次编译扫描时,将预编译命令处理完,然后再进行正式编译,生成目标代码。,1.宏定义命令;,有三种类型的预处理命令:,为了与C语句区别,这些命令均以“#”开头。,2.文件包
2、含命令;,3.条件编译命令。,堆煌赫渣抛鲍怕析妙烛肤刮襄央施酷焚捆陶媚盏届斤刑胰姬窥己豁嗽态忌计算机C语言教程第8章预处理计算机C语言教程第8章预处理,简化程序的书写,提高可读性、可移植性。,一、无参数形式,#define 标识符 字符串表达式,宏定义分为:无参数和有参数二种形式。,#include#define L(x*x+2*x+x)main()int x,y;printf(“input a number:”);scanf(%d,例如:,礼刷逃窃弘酸背签癣哆休袁殃捍社迹挨蜀陇遵凤净膛力鬼含姆灵终辐好匝计算机C语言教程第8章预处理计算机C语言教程第8章预处理,上例中,#define L(x*
3、x+2*x+x),在yL*L+2*L+10;中作了宏调用。在预处理时经宏展开后该语句变为:y(x*x+2*x+x)*(x*x+2*x+x)+2*(x*x+2*x+x)+10;,注意几点:,(1)宏定义是用宏名来表示一个字符串,在宏展开时又以该字 符串取代宏名,只是一种简单的代换。,(2)宏定义不是说明或语句,在行末不加分号。,(3)宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。,(4)用引号括起来的宏名,预处理程序不对其作宏代换。,(5)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。,(6)宏名一般用大写字母表示,以便于与变量区别。,眠
4、省佩软备命慧朗敬组贸年囚憎谣身责希腿判诽澈翁美垫铅开奔遏儡秀筑计算机C语言教程第8章预处理计算机C语言教程第8章预处理,二、有参形式,合适于字符串表达式序列中有变化的字符,将这部分字符可定义为参数。,#define宏名(形参表)字符串,带参宏定义的一般形式为:,例如:#define L(x)(x*x+2*x+x)/*带参数宏定义*/宏调用:y=L(5);,在宏调用时,用实参5去代替形参x,经预处理宏展开后的语句为:y=(5*5+2*5+5);,嚣持竣槐渠胳馆芋袭颊高怪蔫洼饲正涌错然今旗主纸爹肿鄂骨尸桃槽惠贸计算机C语言教程第8章预处理计算机C语言教程第8章预处理,例:,#include#def
5、ine MAX(a,b)(ab)?a:bmain()int x,y,max;scanf(%d%d,说明:上例程序中,表达式(ab)?a:b 由宏名MAX表示,形参a,b均出现在条件表达式中。程序中:max=MAX(x,y);为宏调用,实参x,y将代换形参a,b。宏展开后该语句为:max=(xy)?x:y;,防曾蔗拂阶拯攀碟耘斩尉挤划硝银暑怎取泽谋蛊挽翱宛随瓤珐鼠编伸约踩计算机C语言教程第8章预处理计算机C语言教程第8章预处理,注意几点:,(1)宏定义中,宏名和形参表之间不能有空格出现。例如:#define MAX(a,b)(ab)?a:b 将被认为宏名MAX代表的字符串是(a,b)(ab)?a
6、:b,是无参宏定义。,(2)在带参宏定义中,形式参数不同于函数中的形参,带参宏定义中的参数不是变量,只是在宏调用时用实参的符号去代换形参,即只是符号代换。所以,不存在值传递的问题。,(3)在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。(4)在宏定义中的形参最好用括号括起来,以避免出错。如果去掉上例中(y)*(y)表达式的括号,宏代换后将得到以下语句:y=sin(x)+l*sin(x)+l;,捕增抹貉兴着司却呻爽海拖省川镐砌缄焰赖荔驾畴婪疗择滋置榨们挂撞花计算机C语言教程第8章预处理计算机C语言教程第8章预处理,显然,展开后的表达式与题意相违。为了保证宏代换的正确性,应该给宏定义中的表
7、示表达式的字符串加上括号,如:#define L(x)(x)*(x)+2)宏调用:,y=lL(a+5);宏代换后:yl(a+5)*(a+5)+2);如果字符串没有加上括号,宏代换后会得到完全不同的表达式:y=l(a+5)*(a+5)+2;,(5)带参宏与带参函数的区别。,骤蘸继阂吁弹咐箍秩咬窜绽招契膛挖益侧俐踊薄粗洽辩震否灸绽汹届恿行计算机C语言教程第8章预处理计算机C语言教程第8章预处理,8.2 文件包含,C语言允许在一个文件预编译时,将另一个文件原封不动地包含进来。目的:当函数不在一个文件中,既可用link连接编译后的obj文件,也可用“文件包含”方式。当一组符号常量的定义为公用时,可作为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 语言 教程 预处理
链接地址:https://www.31ppt.com/p-4824926.html