扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
速度是有代价的,inline和宏都是用空间换时间。
创新互联是一家专业提供崇州企业网站建设,专注与网站设计制作、成都网站制作、H5场景定制、小程序制作等业务。10年已为崇州众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
使用内联函数的时候要注意:
1.递归函数不能定义为内联函数
2.内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。
3.内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。
4.对内联函数不能进行异常的接口声明。
1.内联函数可减少cpu的系统开销,并且程序的整体速度将加快,但当内联函数很大时,会有相反的作用,因此一般比较小的函数才使用内联函数.
2.有两种内联函数的声明方法,一种是在函数前使用inline关见字,另一种是在类的内部定义函数的代码,这样的函数将自动转换为内联函数,而且没必要将inline放在函数前面.
3.内联是一种对编译器的请求,下面这些情况会阻止编译器服从这项请求.
如果函数中包含有循环,switch或goto语句,递归函数,含有static的函数.
由此可以看出,内联函数和成员函数没什么区别,区别就在于怎样加快函数的执行速度而已。
其实看你用得编译器了,如果你用的VC++6.0的话, 不管是.C文件还是.CPP文件都可以用inline 定义内联函数。但是语法来说,C语言是没有内联这个概念的,C++才有
C语言编译器应该不支持inline
inline 关键字用来定义一个类的内联函数,C++引入它的主要原因是用它替代C中表达式形式的宏定义
有,只要你不用太老的编译器就应该有
C99标准中增加了关键字inline,并且C99中inline的句法和C++中的一致.
引入内联函数的目的是为了解决程序中函数调用的效率问题。
函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方法,而不必关心函数功能的具体实现;函数的引入可以减少程序的目标代码,实现程序代码和数据的共享。但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。特别是对于一些函数体代码不是很大,但又频繁地被调用的函数来讲,解决其效率问题更为重要。引入内联函数实际上就是为了解决这一问题。
在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。显然,这种做法不会产生转去转回的问题,但是由于在编译时将函数休中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流