一、代码长度:宏是完全替换,插入到程序里使得代码变长;
函数代码是只出现在一个地方,使用时则去那里调用。
二、执行速度:宏更快一些,因为在预编译阶段都已完成;
函数则慢一点,因为需要调用以及返回(压栈/出栈)额外时间。
三、操作符优先级:宏有时要少加括号而导致计算逻辑出错;
函数最后只将值返回来,结果容易预测。
四、参数求值:宏每次都要计算;
函数只需要计算一次,之后多次调用并不会导致多次求值而出错。
五、参数类型:宏不关心类型,只要参数操作合法就可以;
函数类型要一致,不同类型则需要不同函数。
转载于:https://blog.51cto.com/green906/1713170