# re: C++体会 -- 内联函数 回复 更多评论
2007-02-06 10:19 by
"内联会增大程序的代码",这是想当然,实际并非如此,如:
class C
{
int n_;
public :
inline int get_n() { return n_; }
};
C c;
int value = c.get_n(); // 1
如果编程器在1处调用c.get()而不是内联它,那比内联的代码长度更大。想下就知道,为了调用c.get()编译器首先要把返回地址压栈,在函数内还要设置堆栈指针,拷贝c.n_到eax, 然后出栈,拷贝eax的值到value中,可以算下这有多少条代码。若直接内联不过两条而已。
# re: C++体会 -- 内联函数[未登录] 回复 更多评论
2007-02-06 11:57 by
@gql
当然,内联函数也可能减小执行代码的尺寸。特别是,当调用函数的代码总量大于展开的内联函数的代码总量。
这样的情况会发生于非常小的函数。
inline int get_n() { return n_; }
是非常小的函数了,也是我们常用的,请你再加两三行看看,然后调用两次。
事无绝对,但内联函数在编译器编译时大部分会增加长度,也是事实。
就像数学的拐点,在此点以下,数值很小,此点以上数值增大。
也是我没写清楚。