inline函数的作用继承了宏定义的优点,没有了参数压栈,代码生成等一部分操作,并且摒弃了没有检查编译规则的缺点;
另外要注意,内联函数一般只会用在函数内容非常简单的时候,这是因为,内联函数的代码会在任何调用它的地方展开,如果函数太复杂,代码膨胀带来的恶果很可能会大于效率的提高带来的益处。内联函数最重要的使用地方是用于类的存取函数。
原因1:
inline实际上“相当于”宏替换,就是把函数的二进制代码直接复制到调用的地方,因而inline代码不应该有跳转。而循环结构无法避免条件跳转,所以有循环的代码无法inline;
原因2:
inline是将代码copy到指定的位置,放在循环当中就会大量的复制代码;
这可以默认认为inline函数不能在for循环。
http://bbs.csdn.net/topics/340149836
时间: 2024-10-09 03:05:33