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