inline 内联函数

1.目的:

引入内联函数的目的是为了解决程序中函数调用的效率问题。
函数的引入可以减少程序的目标代码,实现程序代码和数据的共享。
但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。
这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。
因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。特别是对于一些函数体代码不是很大,但又频繁地被调用的函数来讲,解决其效率问题更为重要。
引入内联函数实际上就是为了解决这一问题。 在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。显然,这种做法不会产生转去转回的问题,但是由于在编译时将函数休中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。
2.内联函数的定义方法: 定义内联函数的方法很简单,只要在函数定义的头前加上关键字inline即可。内联函数的定义方法与一般函数一样。
如: inline int add (int x, int y) {   return x+y; } 3.调用:
在程序中,调用其函数时,该函数在编译时被替代,而不是像一般函数那样是在运行时被调用。 4.注意:
1.在内联函数内不允许用循环语句和开关语句。 2.内联函数的定义必须出现在内联函数第一次被调用之前。
3.在编译期间可以对参数进行强类型检查,这是它优于宏的一个方面
posted @ 2017-05-09 14:32  翻白眼的哈士奇  阅读(205)  评论(0编辑  收藏  举报