宏和函数的区别
来源:互联网 发布:星际争霸mac版 编辑:程序博客网 时间:2024/06/13 20:52
宏和函数的区别;
C语言中,宏的用处也是十分广泛,宏是一种规则或模式,或称语法替换 ,这种替换在预编译时进行,称作宏展开。
而函数函数就是一系列C语句的集合,为了完成某个会重复使用的特定功能。需要该功能的时候,直接调用该函数即可宏和函数功能上有相同点,但是也有许多差异,在不同的场合做合适的选择,是我们希望的,为此我们看两个例子:例子1:
在两个数中找出较大的一个。
#include <stdio.h>
#define MAX(a, b) a>b?a:b
int main()
{
int max=MAX(1, 3);
printf("%d\n",max);
return 0;
}
很明显,这个例子我们用宏更好,因为简单
例子2:
申请一个10个整型大小的空间
#define MALLOC(num, type)\
(type *)malloc(num * sizeof(type))
//使用
MALLOC(10, int);//类型作为参数
//预处理器替换之后:
(int *)malloc(10 * sizeof(int));
类似于这样功能的例子,明显用宏更好,函数参数没办法只有类型
例子3:
#define MAX(a, b) ( (a) > (b) ? (a) : (b) )
...
x = 5;
y = 8;
z = MAX(x++, y++);
printf("x=%d y=%d z=%d\n", x, y, z);
明显,这个例子用宏的话,会产生副作用,改变了原来的值
因此C语言中,对于宏和函数,我们应该区别二者的差异,以及注意使用场合:
1.相比函数,宏的优势
(1)宏比函数在程序规模和速度方面更胜一筹(因为函数的调用,返回都有开销)
(2)宏与类型无关,使用范围更广
2.相比函数,宏的劣势
(1)每次调用宏时,一份宏定义将插入到程序,除非宏特别短,否则会大幅度增加程序长度
(2)宏没法调试
(3)宏与类型无关,不够严谨
(4)宏会因为运算符优先级问题,导致错误
0 0
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 宏和函数的区别
- 寻找最小生成树的欧拉路径,即一笔画问题
- oracle 外部表总结
- jmeter 3.0 databody 乱码
- summary
- 【Java】在服务器cmd 下 编译调用第三方jar包的文件
- 宏和函数的区别
- Qt入门学习——Qt 5 帮助文档的使用
- 滤波器的使用和经常出现的噪声
- 学习笔记(2)数据结构+算法
- ORA-01658: 无法为表空间 UNDOTBS2 中的段创建 INITIAL 区
- Hibernate4 No Session found for current thread原因
- Hadoop HDFS 架构
- summary
- php 5.3新增的闭包语法详解