1. 调用函数时,先将调用函数的地址放入栈 中,函数执行完后再将调用函数的地址从栈中返回给程序,最后回到原调用点;宏展开是使用取代标识直接将宏名取代
2. 每次调用函数都要进行现场保护和现场恢复,因此需要较多的执行时间,单函数调用不会是目标程序变长。而宏展开是在边远时进行的,不占用运行时间,因此宏比一般函数节省了函数调用时间,单每次引用宏都会使目标程序增大一次,并且宏没有类型转换功能,因此使用时需多加注意。
3. 展开有参宏时,直接将实参置换形参。二调用有参函数时,先将实参的值复制一份,然后再将复制的值传递给形参。
4. 在有参宏中,形参是没有类型的,因此实参可以使任何类型。单在有参函数中,形参是有类型的,因此实参的类型必须与形参保持一致。
阅读(768) | 评论(0) | 转发(0) |