内联函数是c++中的概念,它和C语言中的宏有些类似。都是实现代码替换的功能。
但是宏有着一些缺点,注入不可调试,可读性差,优先级问题也比较多且没有类型检查。所以c++里就引入了内联函数。内联函数关键字是inline 直接写在函数声明定义前面。比如我们写一个 Add函数
inline Add(int x, int y)
{
return x+y;
}
具体作用是建议编译器在预处理阶段将代码展开。
内联函数的特性:
1、可以提升运行效率,就和宏一样,代码的直接替换可以使得一些逻辑简单的操作不通过调用函数实现,从而减少了系统开销。
2、内联函数只是建议编译器展开代码,但是决定权在编译器。因为如果函数的内容比较多,而且频繁调用的话,会导致代码经过预编译之后代码量线性增长,导致代码体积膨胀。所以这里只是建议编译器将内联函数展开,具体展开与否还是要看编译器本身。
3、内联函数不支持声明和定义分离,因为内联函数本身就是通过代码的替换来提升运行效率。既然没有函数调用的过程,那么函数本身也就不存在地址一说,所以链接会找不到。