第4章-模块化程序设计PPT.ppt

  1. 1、本文档共145页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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均出现在条件表达式中。程序

文档评论(0)

djdjix + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档