关于递归函数的内联
请问递归的函数编译器给内联吗?内联以后代码扩展?怎样测试它是否被内联了?麻烦各位老大给小弟大致讲讲,谢谢。
[解决办法]
递归一般不会内联。
[解决办法]
一般标记为内联的函数,在编译时,编译器还会判断一下函数的复杂度。
像递归这样的函数,虽然标记为内联了,但是,由于函数比较复杂,编译器也不会将其它编译为内联函数的。
[解决办法]
递归函数一般是用堆栈实现的,也就是指令级别的实现,内联只是在源代码级别实现
所以估计强制内联应该会无效的。
[解决办法]
编译器在察觉到递归的时候会自动取消内联的。
不仅是递归,在函数体中包含循环和switch的时候,大多数编译器都回取消内联。甚至当函数中有效代码行超多一定数量的时候也有可能取消内联。
inline关键只是告诉编译器我想内联,至于他给不给你办事你就不知道了,呵呵。