C语言inline函数

Python013

C语言inline函数,第1张

普通的函数在调用的时候需要消耗栈空间,cpu和内存利用率会增高,c99中引入了inline关键字,可以在编译的时候,在函数调用处直接把函数像宏一样展开,这样在增加代码空间的情况下降低了cpu和内存的使用。

1、如果Inline函数定义在cpp/c文件中,则本文件里的函数调用会转换为内联代码,但是其他文件的函数调用还是和普通函数一样(gcc标准和c99标准有差别,有可能链接时会找不到函数符号)。

2、如果inline函数定义在.h文件中,则其他文件的函数调用也会转换为内联代码。

3、由于内联函数调用时候不会压栈,所以函数不能是递归函数。

内联inline是给编译器的优化提示,如果一个函数被编译成inline的话,那么就会把函数里面的代码直接插入到调用这个函数的地方,而不是用调用函数的形式。如果函数体代码很短的话,这样会比较有效率,因为调用函数的过程也是需要消耗资源的。但是你inline只是给编译器的提示,编译器会根据实际情况自己决定到底要不要进行内联,如果函数过大、有函数指针指向这个函数或者有递归的情况下编译器都不会进行内联。