虽然在某些情况下使用内联函数会非常方便,
内联函数有什么缺点吗?
结论:
显然,使用内联函数并没有错。
但值得注意的是以下几点!
过度使用内联实际上会使程序变慢。根据函数的大小,内联它可能会导致代码大小增加或减少。内联非常小的访问器函数通常会减少代码大小,而内联非常大的函数会显着增加代码大小。在现代处理器上,由于更好地使用指令缓存,较小的代码通常运行得更快。- 谷歌指南
随着函数大小的增长,内联函数的速度优势趋于减弱。在某些时候,函数调用的开销与函数体的执行相比变得很小,并且失去了好处- 来源
在少数情况下内联函数可能不起作用:
- 对于返回值的函数;如果存在 return 语句。
- 对于不返回任何值的函数;如果存在循环、switch 或 goto 语句。
- 如果函数是递归的。-来源
仅当您指定优化选项时,
__inline
关键字才会内联函数。如果指定了优化,是否__inline
兑现取决于内联优化器选项的设置。默认情况下,只要运行优化器,内联选项就会生效。如果您指定 optimize ,如果您希望__inline
关键字被忽略,则还必须指定 noinline 选项。-来源