先看一段代码:
static inline size_t sdslen(const sds s) {
struct sdshdr *sh = (void*)(s-sizeof *sh);
return sh->len;
}
static inline size_t sdsavail(const sds s) {
struct sdshdr *sh = (void*)(s-sizeof *sh);
return sh->free;
}
这种形式的函数会在c语言的头文件中看到。
为什么要定义内联函数:内联函数能减少内存开销,参数入栈出栈消耗堆内存空间。
为什么要放在头文件中:因为定义为内联函数,所以要用到的地方可能不止一个文件(否则就没必须要定义为内联了)。为了避免多个文件中定义同一个函数出错(不一样),所以放到头文件中最明智了。
为什么要加static?:因为内联函数有多个地方要用到,如果不定位静态函数,会出现一个函数定义多次的问题。