【C语言】宏与函数的对比

有时候解决一个问题会有很多种方法,宏和函数就是一个很好的例子。但是二者到底谁更胜一筹呢?我们来对比一下。

属性

#define

函数

代码长度

每次使用时,宏代码都被插入到程序中,除非是很小的宏,否则程序的代码将大幅度增长

函数代码只出现在一个地方,每次使用这个函数时,都调用那个地方的同一个代码

执行速度

更快

存在函数调用,返回的时间消耗

操作符优先级

宏参数的求值是在上下文环境中的,因此临近的操作符优先级可能会产生不可预料的结果(所以在使用宏时要尽可能适当的多加括号)

函数参数只在函数调用时求值一次,它的结果值传递给函数。表达式的求值结果更容易预测

参数求值

参数每次用于宏定义时,它们都将重新求值。

参数在函数被调用时求值一次

参数类型

参数类型:宏的求值与类型无关

函数的参数是与类型有关的,因此如果参数的类型不同,就需要使用不同的函数

其他

宏不能递归,不能进行调试,可以传递类型

 

宏名全部大写

 

函数可以递归,可以进行调试,不可以传递类型

 

函数名不要全部大写

猜你喜欢

转载自blog.csdn.net/Miss_Monster/article/details/81147811