c++内联函数
内联函数是以 inline关键字修饰的的函数,编译时 C++会在调用内联函数的地方展开,没有函数压栈的开销,是一种 空间换时间的提升程序运行效率的方法。
内联函数调用规则
1.内联函数是一种建议,编译器自动优化,选择某含有inline关键词的函数是否会当做内联函数使用。定义为inline的函数体有递归或循环,编译器默认忽略内联。 一般函数代码少,频繁调用的会当做内联函数。
内联函数注意事项
2.内联函数不建议定义和声明分离,在链接时会报错。编译器在链接时找不到内联函数的地址。如下:
//pt.h
#include <iostream>
using namespace std;
inline void pt(int i);
// pt.cpp
#include "pt.h"
void pt(int i)
{
cout << hello << endl;
}
// main.cpp
#include "pt.h"
int main()
{
pt(10);
return 0;
}
内联函数和宏定义差别
3.内联函数和宏大致一样,都是替换,只不过内联函数更安全,多了语法,类型检查。内联函数本质是函数。
是因为宏是最简单的替换:
除非:
增加括号虽然有用,但面对复杂的就要自己编写更复杂的逻辑。
我们用内联函数看:
一步到位。所以内联函数比宏更好用。