读linux源码以及搞驱动的时候,我们会看到很多inline的使用,对于系统栈空间是很有限的,如果不合理,频繁使用会造成栈空间不足导致程序出错,一个很明显的例子就是:函数死循环的递归调用结果导致栈内存枯竭。和c++中关于inline用法相同。
这里引用别人的一个例子:
//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者
#include <iostream>
#include <string>
using namespace std;
inline string dbtest(int a); //函数原形声明为inline即:内联涵数
void main()
{
for (int i=1;i<=10;i )
{
cout << i << ":" << dbtest(i) << endl;
}
cin.get();
}
string dbtest(int a)//这里不用再次inline,当然加上inline也是不会出错的
{
return (a%2>0)?"奇":"偶";
}
///
这样在编译的时候,每个for循环的内部所有调用dbtest(i)的地方都换成了(i%2>0)?"奇":"偶" 就避免了频繁调用函数对栈内存重复开辟所带来的消耗。