edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2445回复:24

\"inline\"的作用是什么呢?

楼主#
更多 发布于:2002-12-06 15:33
如题!
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-09 14:31
[quote]内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。

3行是我记忆的数字,不一定准确。


记起来了 是什么深度探索C++还是 EFFECTIVE C++ 里讲过的
这个取决于编译器 [/quote]
好像是EFFECTIVE C++ 把。
不过讲inline就应该讲这些。
heqingbj
驱动小牛
驱动小牛
  • 注册日期2002-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-09 14:29
僧多肉少啊。
才蹭了4分。 :D :D :D


同感同感 现在只好到处放水来长分了
heqingbj
驱动小牛
驱动小牛
  • 注册日期2002-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-09 14:27
内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。

3行是我记忆的数字,不一定准确。


记起来了 是什么深度探索C++还是 EFFECTIVE C++ 里讲过的
这个取决于编译器
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-09 14:27
僧多肉少啊。
才蹭了4分。 :D :D :D
edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-09 14:19
搞明白了,OK,放分了!
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-09 14:11
内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。

3行是我记忆的数字,不一定准确。
heqingbj
驱动小牛
驱动小牛
  • 注册日期2002-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-09 14:08
[quote][quote]比如: inline int f(){
    return 0;
}
在编译的时候凡是出现调用f函数的地方,编译后的可执行代码都直接插入到这里,所以提高了运行速度,但占用的空间更大了。

你的意思是不是这样的:就是凡是调用f()的地方,其实都用
return 0;这条语句来代替呢?如果是这样,就有点类似模块,我可以这样理解吧? [/quote]
right.
 [/quote]

内核里好像一般内联函数不特意用return的 不过也没有严格的3行限制哦 可以是简单的赋值操作 也可以是一些有些复杂的判断 不过类似模块我同意 一般好像都用于实现某个功能上 :P 好像等于什么都没有说
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-09 13:58
[quote]比如: inline int f(){
    return 0;
}
在编译的时候凡是出现调用f函数的地方,编译后的可执行代码都直接插入到这里,所以提高了运行速度,但占用的空间更大了。

你的意思是不是这样的:就是凡是调用f()的地方,其实都用
return 0;这条语句来代替呢?如果是这样,就有点类似模块,我可以这样理解吧? [/quote]
right.
edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-12-09 13:22
老兄快给分三

老兄你就知道要分 :mad: :mad: :mad:
分肯定要给的,不过再等等,非得把这个问题给渣干! :D :D :D
edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-09 13:19
比如: inline int f(){
    return 0;
}
在编译的时候凡是出现调用f函数的地方,编译后的可执行代码都直接插入到这里,所以提高了运行速度,但占用的空间更大了。

你的意思是不是这样的:就是凡是调用f()的地方,其实都用
return 0;这条语句来代替呢?如果是这样,就有点类似模块,我可以这样理解吧?
bbs_000
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2003-03-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-09 11:03
老兄快给分三
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-12-09 10:26
[quote]因为达不到提高速度的目的了。
我以前在c++里看到的,现在有些记不清了。但是肯定有行数限制。


恩 好像是这样的 多谢指点
偶现在把好多以前学的东西都还回去咯

 [/quote]
呵呵,我也是。 :)
bbs_000
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2003-03-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-12-09 10:24
它也是一把双刃剑,是牺牲空间为代价的。
heqingbj
驱动小牛
驱动小牛
  • 注册日期2002-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-12-09 10:12
因为达不到提高速度的目的了。
我以前在c++里看到的,现在有些记不清了。但是肯定有行数限制。


恩 好像是这样的 多谢指点
偶现在把好多以前学的东西都还回去咯

unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-12-09 10:04
因为达不到提高速度的目的了。
我以前在c++里看到的,现在有些记不清了。但是肯定有行数限制。
heqingbj
驱动小牛
驱动小牛
  • 注册日期2002-10-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-12-09 10:01
提高速度。当然 ,大于3行的就不能内联了。


大于三行就不能内联了? 这个是为什么阿
偶也不知道 讲讲把:)
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-12-09 09:59
提高速度。当然 ,大于3行的就不能内联了。
edriver
驱动小牛
驱动小牛
  • 注册日期2002-03-04
  • 最后登录2006-09-15
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-12-09 09:51
那么一般实现什么样功能的函数,才有必要声明为inline呢?
bbs_000
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2003-03-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-12-09 09:14
比如: inline int f(){
    return 0;
}
在编译的时候凡是出现调用f函数的地方,编译后的可执行代码都直接插入到这里,所以提高了运行速度,但占用的空间更大了。
上一页
游客

返回顶部