宏定义函数:
- 预处理阶段进行简单的文本替换,没有入栈、出栈、参数传递和函数返回等等工作,执行效率明显高于普通函数,因此,简短并且被频繁调用的函数经常用宏定义函数来代替实现
- 没有参数检查,会影响程序安全
- 如果函数比较复杂,函数体规模比较大,使用宏定义函数就会增加程序的大小
- 宏定义函数的调用有可能改变函数的原生语义,比如涉及到运算符优先级的函数时,调用宏定义函数可能会改变函数的原生语义,所以使用时要格外小心
普通函数:
- 具有参数检查,压栈,出栈,参数传递等工作,程序更加安全,但是执行效率会低于宏定义函数
- 函数体只会存在一个,每次调用都会转向函数体的位置执行函数功能,适合复杂函数的定义