今天在看HAL层的头文件的时候,看到static inline int sensors_open,
对inline有些不了解,在这记录一下内联函数有些类似于宏。内联函数的
代码会被直接嵌入在它被调用的地方,调用几次就嵌入几次,没有使用call
指令。这样省去了函数调用时的一些额外开销,比如保存和恢复函数返回地址
等,可以加快速度。不过调用次数多的话,会使可执行文件变大,这样会降低
速度。相比起宏来说,内核开发者一般更喜欢使用内 联函数。因为
内联函数没有长度限制,格式限制。编译器还可以检查函数调用方式,以防止
其被误用。static inline的内联函数,一般情况下不会产生函数本身的代码,
而是全部被嵌入在被调用的地方。如果不加 static,则表示该函数
有可能会被其他编译单元所调用,所以一定会产生函数本身的代码。所以加了
static,一般可令可执行文件变小。内核里一般见不到只用inline的情况,而
都是使用static inline。