内联函数声明时的inline关键字必须与函数的定义在一起,否则会被编译器忽略。
内联函数:
inline int mufun(){
//代码区
}
内联函数和普通函数的区别在于:当编译器处理调用内联函数的语句时,不会将该语句编译成函数调用的指令,而是直接将整个函数体的代码插人调用语句处,就像整个函数体在调用处被重写了一遍一样。
那么为什么要使用内联函数?
函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下来还要将函数的返回地址(该地址指明了函数执行结束后,程序应该回到哪里继续执行)放入栈中,最后才跳转到函数内部执行。这个过程是要耗费时间的。
另外,函数执行 return 语句返回时,需要从栈中回收形参和局部变量占用的存储空间,然后从栈中取出返回地址,再跳转到该地址继续执行,这个过程也要耗费时间。
上述解释摘自 http://c.biancheng.net/view/199.html
另外值得注意的是:
①:代码区不能存在任何形式的循环语句
②:不能存在过多的条件判断语句
③:函数体不能过于庞大
④:函数内联声明必须在调用语句前
inline知识一种请求,编译器不一定允许。