9.2带参数的宏定义(课件)-《 C语言程序设计》同步教学(电子工业出版社)

2024-08-11
| 19页
| 54人阅读
| 5人下载
普通

内容正文:

第九章 程序设计优化--预处理 1 CONTENTS 目录 01 02 带参数的宏定义 预处理命令 03 文件包含 04 条件编译 C语言 知识树 My First Template 2、带参数的宏定义 C语言程序设计 4 C语言程序设计 带参数的宏定义 C语言 预处理的概念 预处理命令 不带参数的宏定义 My First Template C语言 本次任务 使用带参数的宏定义比较 两个值的大小,输出大值 C语言程序设计—带参数的宏定义 My First Template CONTENTS 内容 带参数的宏定义 01 任务实现 02 带参数的宏与函数的区别 03 7 带参数的宏定义 01 C语言程序设计 带参数的宏定义 C语言 带参宏定义的一般形式 #define 宏名(形参表) 字符串 说明 宏定义中的参数称为形式参数, 宏调用中的参数称为实际参数。 例:#define PI 3.1415926 带参宏调用的一般形式 宏名(实参表) C语言程序设计 带参数的宏定义 C语言 /*宏定义*/ #define S(a,b) a*b …… /*宏调用*/ area = S(3,2) …… 带参宏定义的置换过程 第一步:字符串替换 编译预处理时,程序按照#define命令行中指定的字符串 从左到右进行置换:area=a*b 第二步:参数代换 如果串中包含宏中的形参(如a,b)则将程序语句中的相应的实参代替形参: 得3*2 C语言程序设计 带参数的宏定义 C语言 #include <stdio.h> #define PI 3.1415926 #define S(r) PI*r*r void main() {float a,area; a=3.6; area=S(a); printf(“r=%f area=%f ”,a,area) ; } 例:使用带参的宏求圆的面积 赋值语句area=S(a);经宏展开后为: area=3.1415926*a*a; 带入参数a=3.6得:area=3.1415926*3.6*3.6 任务实现 02 C语言 本次任务 使用带参数的宏定义比较 两个值的大小,输出大值 C语言程序设计—带参数的宏定义 My First Template C语言程序设计 带参数的宏定义 C语言 任务实现——函数 不带参数的宏定义、带参数的宏定义 #include <stdio.h> int max(int x,int y) {return(x>y)?x:y;} void main( ) { int a,b,t; printf("请输入两个整数,中间用逗号隔开 "); scanf("%d,%d",&a,&b); t=max(a,b); printf("最大值为:%d ",t); } My First Template C语言程序设计 带参数的宏定义 C语言 不带参数的宏定义、带参数的宏定义 #include "stdio.h" #define PR printf #define MAX(x,y) (x>y)?x:y void main() { int a,b; printf("请输入两个整数,中间用逗号隔开 "); scanf("%d,%d",&a,&b); PR("最大值为:%d ",MAX(a,b)); } 预处理 变量定义 变量赋值 宏代换输出结果 任务实现——带参数的宏定义 说明:宏名与形参的左括号间不能有空格,否则将会把宏名后所有数据都当做字符串的一部分。 #define MAX (x,y) (x>y)?x:y 误认为:无参宏定义,宏名MAX代表字符串(x,y) (x>y)?x:y PR printf MAX(a,b) (x>y)?x:y 输出结果: My First Template 带参数的宏与函数的区别 03 C语言程序设计 带参数的宏定义 C语言 带参的宏和函数的区别 1、宏替换不占运行时间,只占编译时间,而函数调用则占用运行时间。 2、函数调用发生在程序运行时,需要分配临时的内存单元,宏替换是在编译时进 行的,不分配内存单元,不进行值的传递处理,也没有返回值的概念。 3、使用宏次数多时,宏展开后源程序变长。而函数调用不会使源程序变长。 4、函数调用时,先求出实参表达式的值,然后代入形参。而使用带参的宏只 是进行简单的字符替换。 C语言程序设计 带参数的宏定义 C语言 5、函数中的实参与形参均需定义类型,且类型必须一致;宏定义不存在此问题, 宏名无类型,其参数也无类型,宏定义时字符串可以是任何类型的数据。 函数: int max(int x,int y) {return(x>y)?x:y;} void main( ) { int a,b; ……} 带参数的宏定义: #define MAX(x,y) (x>y)?x:y void main() { int a,b; …… PR("最大值为:%d ",MAX(a,b)); } 总结 1. 带参数的宏定义 3. 带参数的宏与函数的区别 2. 任务实现 $$

资源预览图

9.2带参数的宏定义(课件)-《 C语言程序设计》同步教学(电子工业出版社)
1
9.2带参数的宏定义(课件)-《 C语言程序设计》同步教学(电子工业出版社)
2
9.2带参数的宏定义(课件)-《 C语言程序设计》同步教学(电子工业出版社)
3
9.2带参数的宏定义(课件)-《 C语言程序设计》同步教学(电子工业出版社)
4
9.2带参数的宏定义(课件)-《 C语言程序设计》同步教学(电子工业出版社)
5
9.2带参数的宏定义(课件)-《 C语言程序设计》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。