阅读:2446回复:24
\"inline\"的作用是什么呢?
如题!
|
|
沙发#
发布于:2002-12-06 16:13
内联咯 有点象宏 所有使用内联函数的地方都会使用程序体进行代换
少了函数切换的时间 但耗资源 |
|
板凳#
发布于:2002-12-06 16:35
还有一点就是inline function可以进行类型匹配的检查, 而define不会
|
|
地板#
发布于:2002-12-06 16:46
还有一点就是inline function可以进行类型匹配的检查, 而define不会 :D 很多 这就是它不同于宏的关键一点 |
|
地下室#
发布于:2002-12-06 17:10
两位仁兄,能不能给我举个例子呀 :D :D :D
在linux里看到好多inline函数,就是不理解,举个简单的例子如何? |
|
5楼#
发布于:2002-12-08 14:42
把它当正常函数看就可以
inline是由编译器来处理的 |
|
6楼#
发布于:2002-12-09 09:14
比如: inline int f(){
return 0; } 在编译的时候凡是出现调用f函数的地方,编译后的可执行代码都直接插入到这里,所以提高了运行速度,但占用的空间更大了。 |
|
7楼#
发布于:2002-12-09 09:51
那么一般实现什么样功能的函数,才有必要声明为inline呢?
|
|
8楼#
发布于:2002-12-09 09:59
提高速度。当然 ,大于3行的就不能内联了。
|
|
9楼#
发布于:2002-12-09 10:01
提高速度。当然 ,大于3行的就不能内联了。 大于三行就不能内联了? 这个是为什么阿 偶也不知道 讲讲把:) |
|
10楼#
发布于:2002-12-09 10:04
因为达不到提高速度的目的了。
我以前在c++里看到的,现在有些记不清了。但是肯定有行数限制。 |
|
11楼#
发布于:2002-12-09 10:12
因为达不到提高速度的目的了。 恩 好像是这样的 多谢指点 偶现在把好多以前学的东西都还回去咯 |
|
12楼#
发布于:2002-12-09 10:24
它也是一把双刃剑,是牺牲空间为代价的。
|
|
13楼#
发布于:2002-12-09 10:26
[quote]因为达不到提高速度的目的了。 恩 好像是这样的 多谢指点 偶现在把好多以前学的东西都还回去咯 [/quote] 呵呵,我也是。 :) |
|
14楼#
发布于:2002-12-09 11:03
老兄快给分三
|
|
15楼#
发布于:2002-12-09 13:19
比如: inline int f(){ 你的意思是不是这样的:就是凡是调用f()的地方,其实都用 return 0;这条语句来代替呢?如果是这样,就有点类似模块,我可以这样理解吧? |
|
16楼#
发布于:2002-12-09 13:22
老兄快给分三 老兄你就知道要分 :mad: :mad: :mad: 分肯定要给的,不过再等等,非得把这个问题给渣干! :D :D :D |
|
17楼#
发布于:2002-12-09 13:58
[quote]比如: inline int f(){ 你的意思是不是这样的:就是凡是调用f()的地方,其实都用 return 0;这条语句来代替呢?如果是这样,就有点类似模块,我可以这样理解吧? [/quote] right. |
|
18楼#
发布于:2002-12-09 14:08
[quote][quote]比如: inline int f(){ 你的意思是不是这样的:就是凡是调用f()的地方,其实都用 return 0;这条语句来代替呢?如果是这样,就有点类似模块,我可以这样理解吧? [/quote] right. [/quote] 内核里好像一般内联函数不特意用return的 不过也没有严格的3行限制哦 可以是简单的赋值操作 也可以是一些有些复杂的判断 不过类似模块我同意 一般好像都用于实现某个功能上 :P 好像等于什么都没有说 |
|
19楼#
发布于:2002-12-09 14:11
内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。
3行是我记忆的数字,不一定准确。 |
|
上一页
下一页