普通函数和内联函数的区别
1.内联函数在编译的过程中,就没有函数的调用开销了,在函数的调用点直接把函数的代码进行展开处理了。 2.内联函数不再生成相应的函数符号了。 3.内联函数只是建议编译器把这个函数处理成内联函数,不是所有的inline都会被处理成内联函数,是根据代码的复杂程度由系统决定的。(例如递归函数,复杂的程度众所周知,就不会被处理成内联函数) 4.在C++中,在类的内部定义了函数体的函数,都被默认成是内联函数。
普通函数在被调用时,系统首先要 跳跃到该函数的入口地址,执行函数体,执行完成后,再返回到函数调用的地方,函数始终只有一个拷贝; 而内联函数则不需要进行一个寻址的过程,当执行到内联函数时,此函数展开(很类似宏的使用),如果在 N处调用了此内联函数,则此函数就会有N个代码段的拷贝。 从内联函数的角度来看,它少了一个寻址的过程,这是以空间的代价来换取的。
