大家好,今天来给大家介绍一下宏实现的原理以及缺点,还有宏和函数的一些区别(下一期给大家详细介绍宏和函数的区别),那么话不多说,我们现在开始。
1.宏和参数不是计算之后传进去,而是替换进去的。
2.带副作用的宏参数,当宏参数在宏的定义中出现超过一次的时候,如果参数带有副作用,那么你在使用这个宏的时候就可能出现危险,导致不可预料的后果。
那么什么算是带有副作用的参数呢?
副作用就是表达式求值的时候出现的永久性效果。
x+1不改变x本身的值,不带副效果
x++改变了x的值,带有副效果。
注意:宏是对参数直接替换,函数是在传参是进行计算后再执行相关语句。
宏的缺点:
1:每次使用宏的时候,一份宏定义的代码将插入到程序中,除非宏比较短,否则可能大幅增加程序的长度。
2.宏是无法调试的(因为宏在预编译阶段就进行替换)
3.宏由于类型无关,也就不够严谨
4.宏可能会带来运算符优先级的问题,导致程序容易出现错误
但是宏有时候可以做到函数做不到的事情。比如:宏的参数可以出现类型,但是函数做不到
好了,今天分享就到这里,谢谢大家!!!