宏定义和函数是常用的技巧,特别是函数。但是阅读linux源码就会发现,其中很多的代码并不是用函数实现的,而是采用宏定义实现。这样能减少函数之间的不停切换。
函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用系统的栈来保存数据的,如果编译器里有栈检查选项,一般在函数的头会嵌入一些汇编语句对当前栈进行检查;同时,CPU 也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,函数调用需要一些CPU 时间。而宏函数不存在这个问题。宏函数仅仅作为预先写好的代码嵌入到当前程序,不会产生函数调用,所以仅仅是占用了空间,在频繁调用同一个宏函数的时候,该现象尤其突出。
引用嵌入式C/C++语言精华文章集锦。
阅读(2085) | 评论(0) | 转发(0) |