主题:【原创】猛批烂书 程序员面试宝典 上 -- 晨池
C++中,inline实际上是一个hint,它提示(或建议)编译器此成员函数宜于展开使用,既然是建议,编译器可以不予理睬。原因很多,有可能编译器并不支持函数展开,也有可能用户寻求最短代码而非高效代码。
C++不强制inline函数展开,这样做是有道理的。它增进了代码重用。当调用环境需要较小的代码时,inline就被忽略。而在重视代码效率的环境下,inline 就得到采用。由于使用了inline,函数可用于不同的环境中。
另外,inline所换来的效率提高并不一定增加空间消耗。inline展开的结果之一,就是展开的代码可以在调用环境中予以优化,这样产生的代码反而可能更小。晨池例子的第二部分就说明了这个问题。
原来的代码是 printf("%d",fact(8))
通过展开变成 printf("%d",8*8)
因为 8*8 是常数表达式,继续优化成64(40h)
printf("%d", 64)
其机器代码为
push 40h
push "%d"
call printf
- 相关回复 上下关系8
🙂学java的,当初直接下个葵花宝典看看就上。 魔法の裂痕 字0 2010-11-26 00:56:21
🙂面试还是考卷,怎么全是编程 心文连博 字0 2010-11-11 16:40:04
🙂那本书里面的题目确实很多,应该说针对的是求职吧 晨池 字0 2010-11-12 04:48:23
🙂关于 inline
🙂GCC的话,若不加-O2,inline等于没有。 abadcafe 字0 2010-11-12 04:51:23
🙂果然是面试宝典,俺要去买本 廣雅疏證 字29 2010-11-09 21:00:23
🙂写本书实在很不容易 zyzy 字40 2010-11-09 01:35:57
🙂他们写这本书,写的太容易了,这个可不是苛责 2 晨池 字221 2010-11-09 05:07:59