两者的区别是一种典型的时间-空间互换。
宏版本在每个被用到的地方都被C预处理器展开(要求更多的代码空间),但是它在执行时更快,因为它不需要执行函数调用(对于有些体系结构,这是费时的)。
而对于函数版本,它在每个被调用的地方变成了一些指令(参数压栈,调用函数等),要求较少的代码空间,但会花费更多的执行时间。
更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn
两者的区别是一种典型的时间-空间互换。
宏版本在每个被用到的地方都被C预处理器展开(要求更多的代码空间),但是它在执行时更快,因为它不需要执行函数调用(对于有些体系结构,这是费时的)。
而对于函数版本,它在每个被调用的地方变成了一些指令(参数压栈,调用函数等),要求较少的代码空间,但会花费更多的执行时间。
更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn