社区
C++ 语言
帖子详情
inline函数?
butterflygogogo
2010-11-19 10:52:39
c++中的inline函数和普通的函数有什么区别 ?
是在效率上更好些吗?
...全文
158
18
打赏
收藏
inline函数?
c++中的inline函数和普通的函数有什么区别 ? 是在效率上更好些吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flower_fancy
2010-11-19
打赏
举报
回复
inline函数会在调用处展开具体的函数,这样可以节省一般调用函数时的时间和内存开销。。。
dingshaofengbinbin
2010-11-19
打赏
举报
回复
效率在某些情况下是高了,但是不是绝对的,而且不是什么函数都能成为inline的,一般情况下必须是简单的函数
hai040
2010-11-19
打赏
举报
回复
[Quote=引用 3 楼 zhangjian33446 的回复:]
引用 1 楼 ouyh12345 的回复:
inline直接把函数展开,省略了入栈、出栈的过程
效率肯定好
小弟对编译器的编译过程也不是很清楚 麻烦问下 你所说的入栈和出栈是什么意思?
[/Quote]
这个看汇编教程,进入函数时要保存现场,调用完要恢复
lhy
2010-11-19
打赏
举报
回复
你写inline,编译器不一定真给你inline。
libinfei8848
2010-11-19
打赏
举报
回复
你可以写两个函数一个带inline,一个不带,看汇编
hongkun18
2010-11-19
打赏
举报
回复
普通函数调用需要栈来管理内存(调用前后的变量等信息).inline则不需要此过程.
qq120848369
2010-11-19
打赏
举报
回复
函数体没有递归,语句简单,函数使用频率高,那可以声明为inline,至于是否真的会变成inline由编译器再做决定.
cnpsl
2010-11-19
打赏
举报
回复
inline是一个以空间换时间的语意,调用inline函数之处将直接拷贝函数代码到调用处,免去了函数调用的参数入栈、出栈过程,因此节约时间。
inline函数的特点是简而短,应该避免在循环体内调用inline函数。
羽飞
2010-11-19
打赏
举报
回复
这个问题在effective中讲的很清楚
無_1024
2010-11-19
打赏
举报
回复
对于代码比较段的inline内联函数而言效率更好
butterflygogogo
2010-11-19
打赏
举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]
inline直接把函数展开,省略了入栈、出栈的过程
效率肯定好
[/Quote]
小弟对编译器的编译过程也不是很清楚 麻烦问下 你所说的入栈和出栈是什么意思?
gules
2010-11-19
打赏
举报
回复
inline函数是指将函数体代码替换函数调用处,即不真正进行函数调用,而是代码替换,这样效率是要高一些(节省了函数调用的开销,如栈操作)。
不过,inline在C++编译器中只是一个指示,而不是命令。也就是说,是否inline化主动权在编译器,编译器有一套规则来决定是否进行代码替换。一般而言,只有极简单的函数才适合inline。
ouyh12345
2010-11-19
打赏
举报
回复
inline直接把函数展开,省略了入栈、出栈的过程
效率肯定好
zongzihe
2010-11-19
打赏
举报
回复
inline适用于代码较为简单的函数,没有递归和循环,在编译时进行代码展开,减少了函数调用的消耗,但是也增大了代码的体积。
车太靓
2010-11-19
打赏
举报
回复
。。。。。。哦。学习了
Metrosexual
2010-11-19
打赏
举报
回复
Inline 替换效率高,但是Inline 代码最好不要超过5行!效率!
luciferisnotsatan
2010-11-19
打赏
举报
回复
[Quote=引用 2 楼 gules 的回复:]
inline函数是指将函数体代码替换函数调用处,即不真正进行函数调用,而是代码替换,这样效率是要高一些(节省了函数调用的开销,如栈操作)。
不过,inline在C++编译器中只是一个指示,而不是命令。也就是说,是否inline化主动权在编译器,编译器有一套规则来决定是否进行代码替换。一般而言,只有极简单的函数才适合inline。
[/Quote]
正解
inline直接把函数替换成代码,减少了函数调用的消耗。但同时,编译后的代码量就增加了。
inline只是个建议,是否替换,由编译器决定
zourong0412
2010-11-19
打赏
举报
回复
楼上和一楼正解..我们也在学inline,简单的说是内联函数,普通函数执行的时候,还要调用它,但是inline就不用,相当于直接执行inline里面的代码,所以效率很高,直接用内存,但是代码多的时候,建议还是将它封装成一个函数,inline可以想象成直接执行。编译的时候,就好像宏定义一样,知道宏定义吗?就是#define M 50这样的,不过是否能形成内联函数,需要看编译器对该函数定义的具体处理。
上面的是我的理解,内联函数还分为显示内联和隐式内联两种,在类声明的内部声明,而在类声明外部定义叫做显式内联函数;在类声明的内部定义,叫做隐式内联函数;我习惯用隐式的内联...因为定义和声明放一起了,不用再写一遍(==有点懒...)
如果还是不理解的话,建议去看百科,然后自己编一下代码,这个很简单,很好理解的。
API hook(
inline
)超简入门代码
简单的API hook的入门用代码参考,hook目标MessageBoxW。hook形式:
inline
hook
c语言
inline
函数
的总结,C++中
inline
函数
详解
本文主要记录了C++中的
inline
函数
,也就是内联
函数
,主要记录了以下几个问题:一、C++为什么引入
inline
函数
?主要目的:用它代替C语言中表达式形式的宏定义来解决程序中
函数
调用的效率问题。C语言中的宏定义:#...
MUI-H5 PULS混合开发视频教程
MUI是国内最主流的跨平台APP开发框架 RN是国外最主流的跨平台APP开发框架,MUI是基于webview进行渲染的,RN是基于原生组件进行渲染,从功能和体验上RN更加接近原生,但是学习难度相对比MUI来说稍微高一些
C++中的
inline
函数
、static
函数
、宏和普通
函数
的详细区别
首先先看一下什么是
inline
函数
?
inline
(内联
函数
):是在
函数
调用点将
函数
代码进行展开。 其实吧,这里的展开就是给编译器的一个建议,建议编译器将内联
函数
展开,具体会不会展开,还是要看编译器的处理,比如...
C++--问题13--
inline
函数
和宏定义的区别
C++--问题13--
inline
函数
和宏定义的区别 1.
inline
函数
是什么:
inline
是内联的意思,可以定义比较小的
函数
。因为
函数
频繁调用会占用很多的栈空间,进行入栈出栈操作也耗费计算资源,所以可以用
inline
关键字修饰...
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章