88问答网
所有问题
关于C语言,内联函数有什么优点?
如题所述
举报该问题
推荐答案 2006-08-08
引入内联函数的目的是为了解决程序中函数调用的效率问题。
函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方法,而不必关心函数功能的具体实现;函数的引入可以减少程序的目标代码,实现程序代码和数据的共享。但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。特别是对于一些函数体代码不是很大,但又频繁地被调用的函数来讲,解决其效率问题更为重要。引入内联函数实际上就是为了解决这一问题。
在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。显然,这种做法不会产生转去转回的问题,但是由于在编译时将函数休中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。
参考资料:
http://www.ie100.cn/techinfo/1537/41327.htm
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://88.wendadaohang.com/zd/MaKBMVKM.html
其他回答
第1个回答 2006-08-08
内联函数inline不能过于复杂, 通常只是一两句简单的语句。 如果过于复杂, 比如里面有循环什么的, 系统将不按照内联函数进行处理, 按照普通函数处理, 但不会报错。
第2个回答 2006-08-08
你想问它比宏定义有什么优点是吗?
其实很简单,宏定义是不经过编译器检查的,只有在编译时候,当宏被替换时候才会检查出错误,而且错误不容易发现
用内联函数inline 就通过检查,可以及时发现错误
当然,内联函数,打字比较多,但比较好,推荐使用
顺便说一句,用宏定义常量已经被const代替
宏定义过程已经被内联函数代替
第3个回答 2020-04-20
c语言本身是不支持内联函数的,在最新的c标准c99中c语言支持了内联函数。
c++支持内联函数。
从编译器的角度:
有些c语言编译器,例如gnu
c提供了内联函数的支持。
所有c++编译器都支持内联函数。
如果你的c语言编译器不支持内联函数,看看它有多古老,太古老不行(例如
turbo
c
2.0)。如果是c/c++合体编译器,那就切换到编译c++模式(例如visualc++)。
相似回答
在
c语言
中
内联函数有什么
作用
答:
1.内联函数可减少cpu的系统开销,并且程序的整体速度将加快
,但当内联函数很大时,会有相反的作用,因此一般比较小的函数才使用内联函数.2.有两种内联函数的声明方法,一种是在函数前使用inline关见字,另一种是在类的内部定义函数的代码,这样的函数将自动转换为内联函数,而且没必要将inline放在函...
ifc在
c语言
是
什么
意思
答:
ifc的最大优点是可以提高程序的执行效率,尤其适用于需要频繁调用的函数
。此外,使用ifc可以避免一些调用函数时的额外开销,如函数参数的复制等,从而减少内存的占用。然而,ifc也有其缺点,例如过度使用ifc会导致可读性降低,使程序难以维护。因此,在使用ifc时需要谨慎考虑,选择合适的场景和函数使用ifc。
内联函数
inline
有什么
用吗?
答:
inline的函数是复制到调用位置,而不是跳转调用,
这样的好处是避免函数调用本身出栈入栈消耗额外的时间,而且高速缓存会更容易命中(一项CPU的技术
,命中时会提高运行速度,数据不走内存避免了额外时间消耗)。。。 inline只用于内容重复,但代码很短的函数,避免出栈入栈消耗额外的时间,其实内联函数并不...
c++
内联函数
和普通函数的区别
答:
对于基于C的编译系统,
内联函数的使用可能大大增加编译时间
,因为每个调用该函数的地方都需要替换成函数体,代码量的增加也同时带来了潜在的编译时间的增加。3、运行的效率不同:使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支...
C语言
中
内联函数
的速度快于普通函数,普通函数存在的作用是?为
什么
不都...
答:
速度是有代价的,inline和宏都是用空间换时间。使用
内联函数
的时候要注意:1.递归函数不能定义为内联函数 2.内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。3.内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。4....
内联函数
答:
关于实参和形参结合的过程,我认为前面实参的进栈就是了,实参在栈中所占的内存单元就是形参的地址
,函数
中需要操作形参就直接去栈里面找到它们。(PS:个别地方和我接触过的“标准”上说的有些矛盾,尤其是形参在栈底下面,是VC++的编译器对
程序
作了优化,减少了不必要的空间开销吗?也可能是我对栈...
下面说法正确的是( )。
答:
【解析】
内联函数
用inline修饰,用于取代
C语言
中的宏定义。inline是建议机制而不是强制机制,也就是说,程序员可以指定任意函数为inline函数,但是编译器会根据系统情况来决定是否将其inline处理。对于较大的函数,编译器往往会取消其inline特性。inline函数的特点之一就是执行速度快,其实质是在编译时将函数...
C语言
关键词学习总结?
答:
C++提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于
C语言
中的宏展开。这种在函数调用处直接嵌入函数体的函数称为
内联函数
(inlinefunction),又称内嵌函数或内置函数。
优点
:内联函数可以有效避免函数调用的开销,程序执行效率更高。 缺点:如果被声明为内联函数的函数体非常大,则编译器编译后程序...
大家正在搜
构造函数可以是内联函数吗
内联函数是什么
C语言优点有哪些
C语言文件有哪些优点
不属于c语言优点的是
c语言的优点有面向对象吗
C语言的优缺点
C语言中文件的优点
C语言是什么
相关问题
内联函数与C语言函数调用有什么区别??
C++内联函数具体有什么作用?
内联成员函数的优缺点【C++】
C语言有内联函数吗?
C语言中 内联函数的速度快于普通函数,普通函数存在的作用是?...
在c++中外联函数与内联函数相比有什么好处?
C++内联函数为什么能带来性能提升
C语言内联函数相关小问题