- 1、本文档共145页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章-模块化程序设计PPT
◆宏名中不能含有空格。 例如想用“A NAME”定义“SMISS”,而写成: #define A NAME SMISS 则实际进行的宏定义是A为宏名字,宏体是“NAME SMISS”。 C程序员一般都习惯用大写字母定义宏名字。这样的表示方法使宏名与变量名有明显的区别,以避免混淆。此外有助于快速识别要发生宏替换的位置,提高程序的可读性。 ◆不能进行宏名字的重定义。 (3)定义一个宏名字以后,就可以在后面使用这个宏名字了,包括在后面的宏定义中使用。 例如求圆的周长和面积的程序可以改写为 #include stdio.h #define PI 3.1415926 #define R 1.0 #define CIRCUM 2.0*PI*R /* 使用了前面定义的R和PI */ #define AREA PI*R*R int main(void) { printf(“The circum is %f and area is %f\n”,CIRCUM,AREA); } /*下面是另外一种形式的宏定义: */ #include stdio.h #define PI 3#define RADIUS 1.0 #define CIRCUM return(2.0*PI* RADIUS); /*分号是return语句的一部分 */ #define AREA return(PI* RADIUS* RADIUS); double circum( ) { CIRCUM } double area( ) { AREA } int main(void) { printf(The circum is %f and area is %f\n,circum(),area()); } (4)不能进行的宏替换。 不可以替换作为用户标识符中的成分。 例如在前面的例子中,不可以用“R”替换“CIRCUM”中的“R”。 不能替换字符串常量中的成分。 举例如下: #include stdio.h #define PI 3#define RADIUS 1.0 #define CIRCUM return(2.0*PI* RADIUS); #define AREA return(PI* RADIUS* RADIUS); int main(void) { printf(“The CIRCUM is %f ”, CIRCUM); printf(“ and AREA is %f\n”, AREA ); } 运行结果为: The CIRCUM is 6.283185 and AREA is 3.141593不会用宏名字“CIRCUM”和“AREA”替换格式串“CIRCUM”和“AREA”。 (5)一行中写不下的宏定义,应在前一行结尾使用一个续行符“\”,并且在下一行开始不使用空格。 例如 #define AIPHABET ABCDEFGHHIJKLMN\ OPQRSTUVWXY (6)宏定义可以写在源程序中的任何地方,但一定要写在程序中引用该宏之前,通常写在一个文件之首。对多个文件可以共用的宏定义,可以集中起来构成一个单独的头文件。 三、撤销已定义的宏 用命令#undef 可以撤销已定义的宏。 如: … #define OK 1 … #undef OK … 在 #undef 命令行之后的范围,OK不再代表1。 * * C语言程序设计 四、带参数的宏定义 C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义格式: #define 宏名(形参表) 字符串 在字符串中含有各形参。 带参宏调用的一般形式: 宏名(实参表); * * C语言程序设计 例如: #define M(y) y*y+3*y /*宏定义*/ : k=M(5); /*宏调用*/ : 在宏调用时,用实参5去代替形参y, 经预处理宏展开后的语句为: k=5*5+3*5 * * C语言程序设计 【例】 #define MAX(a,b) (ab)?a:b main(){ int x,y,max; printf(input two numbers: ); scanf(%d%d,x,y); max=MAX(x,y); printf(max=%d\n,max); } 上例程序的第一行进行带参宏定义,用宏名MAX表示条件表达式(ab)?a:b,形参a,b均出现在条件表达式中。程序
您可能关注的文档
- 第17章-申诉控告PPT.ppt
- 第17讲--免疫调节PPT.ppt
- 第17讲玉米类型识别PPT.ppt
- 第17讲鼠标消息响应和界面设计PPT.ppt
- 第18-19章-职位聘任法律责任PPT.ppt
- 第17章 矿物质饲料24PPT.ppt
- 第17章--灌浆法PPT.ppt
- 第18章--特殊土地基处理PPT.ppt
- 第18章 饲料添加剂34PPT.ppt
- 第18章-抗精神失常药PPT.ppt
- 2022~2023广播影视职业技能鉴定考试题库及答案第245期 .pdf
- 2021年新疆兵团公务员考试《申论》真题试卷 .pdf
- 2020-2021学年高二下学期第一次月考数学复习卷 (92)(含答案解析)_图文.pdf
- 2020年甘肃省兰州市安宁区社区专职工作者考试《公共基础知识》试题及解.pdf
- 2021年初中生物学业水平测试模拟题【精华版】 .pdf
- 2021消防设施操作员模拟试题精选及答案5篇 .pdf
- 2022-2023学年人教版生物七年级上册第一单元 生物和生物圈定向测试试卷完整版720736610.pdf
- 2020-2021学年苏教版数学五年级下册第一单元《简易方程》跟踪测试卷.pdf
- 2021-2022届一级建造师《矿业工程管理与实务》试题 附答案 .pdf
- 2021年广州市申论真题及参考答案 .pdf
文档评论(0)