目录
前言
我们知道,在C语言中,宏的功能是必不可少的。因为相对来说,宏是简单的,因为宏只在预处理阶段进行操作,之后,程序的进行与宏基本没有什么关系了。
而对于函数来说,是需要进行调用的,也即是需要调用函数堆栈的,所以相对来说,函数对于整个程序来说是比较繁琐的。
好的,那么我们进入正文。
宏的优势
首先,对于宏来说,一般是用于比较简单的运算,比如定义一个比较两数大小的宏,这里可以用三目操作符。那么我们知道,比较两数大小也可以用函数,同样也可以实现,那么为什么不用函数?
原因如下:
1.用于调用函数和返回函数参数的代码可能比实际执行这个小型工作需要的时间更多,比如在调用和返回时,需要进行大量的栈帧的创建和销毁。
因此宏相对于函数来说,在速度上更胜一筹
2.对于函数来说,参数是有类型的,如果参数不匹配,则将不能执行。反观宏来说,是不需要的类型的。
所以宏是无关类型的
3.宏的参数可以是类型,但是函数的参数不能。
所以,相对来说,宏在执行小型工作时,是有很大优势的。
宏的缺点
那么我们知道,对于小型工作,宏是比较好的。但是宏也是有一定的缺点的:
1.每次使用宏的时候,都需要将一份宏的代码插入程序中,要么宏比较短,否则可能大幅增加程序的长度。
2.宏是无法调试的。
3.宏无关类型,所以是不严谨的。
4.如果在使用宏的时候,对于运算符优先级使用不当,则可能产生错误。
5.宏是不能递归的,可以在宏中使用其他宏定义的内容,但是不能递归。
好的,那么对于宏的优缺点就结束啦,如有问题,还请指正呀!