inline函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。
用inline的函数比一般函数调用速度快, 但会占用更多内存空间
static 函数 不能被外部文件调用的,只能被在本文件调用的
用inline的函数比一般函数调用速度快, 但会占用更多内存空间
static 函数 不能被外部文件调用的,只能被在本文件调用的
如果static函数时一个类的成员函数, 那这个函数可以在没有类的实例的情况下被调用
static inline的内联函数,一般情况下不会产生函数本身的代码,而是全部被嵌入在被调用的地方。如果不加static,则表示该函数有可能会被其他编译单元所调用,所以一定会产生函数本身的代码。所以加了static,一般可令可执行文件变小。内核里一般见不到只用inline的情况,而都是使用static inline。
这一合并能够免除函数调用的任何开销,#define语句也可以排除额外的函数调用。
另外,使用inline会增加二进制映像的大小,而这会降低访问CPU高速缓存的速度,所以不能在所有的函数定义中使用它。