内联函数:static inline 和 extern inline 的含义

引入内联函数的目的是为了解决程序中函数调用的效率问题。 

  函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方法,而没必要关心函数功能的具体实现;函数的引入能够减小程序的目标代码,实现程序代码和数据的共享。可是,函数调用也会
带来下降效率的问题,由于调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操做要求在转去前要保护现场并记
忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。所以,函数调用要有必定的时间和空间方面的开销,因而将影响其效率。特别是对于一些函数
体代码不是很大,但又频繁地被调用的函数来说,解决其效率问题更为重要。引入内联函数实际上就是为了解决这一问题。
  在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。显然,这种作法不会产生转去转回的问题,可是因为在编译时将函数休中的代码被替代到程序中,
所以会增长目标
程序代码量,进而增长空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增长为代价来换取时间的节省。
1.内联函数可减小cpu的系统开销,而且程序的总体速度将加快,但当内联函数很大时,会有相反的做用,所以通常比较小的函数才使用内联函数.
2.有两种内联函数的声明方法,一种是在函数前使用inline关见字,另外一种是在类的内部定义函数的代码,这样的函数将自动转换为内联函数,并且不必将inline放在函数前面.
3.内联是一种对编译器的请求,下面这些状况会阻止编译器服从这项请求.
  若是函数中包含有循环,switch或goto语句,递归函数,含有static的函数.

由此能够看出,内联函数和成员函数没什么区别,区别就在于怎样加快函数的执行速度而已。
  内联函数是浪费空间来节省时间的设置,由于函数的调用是很浪费时间的,写成内联函数能够在每次调用时用函数体内容代替函数调用,有点相似一个宏定义。当函数体语句较少,且没有复杂的循环语句,
调用次数较多时,就能够用内联函数。 extern inline表示该函数是已声明过的了.因为函数自己能够声明屡次,因此extern对函数的影响仅仅把函数的隐藏属性显式化了. extern 对于非函数的对象是有用的,由于对象声明时会带来内存的分配,而用 extern就表示该对象已经声明过了,不用再分配内存. static是之前C的用法.目的是让该关键字标识的函数只在本地文件可见,同一个程序的其它文件是不可见该函数的.换句话说,就算你其它文件里包含了同名同参数表的函数定义的话,也是不会引发函数重复定义的错误的.由于static是仅在当前文件可见.
相关文章
相关标签/搜索