Delphi 2009 编译器如何处理递归内联方法?
执行“使用内联函数有什么问题”和“递归函数可以内联”适用于Delphi内联函数吗? 此外,有谁知道Delphi中如何处理递归内联函数?
Do "What's wrong with using inline functions" and "Can a recursive function be inline" apply to Delphi inline functions? Furthermore, does anyone know how recursive inline functions are handled in Delphi?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的猜测可能不是,因为内联只是一个建议,但让我们找出答案。
一个简单的递归阶乘例程:
这是对其调用的反汇编:
以及例程本身的反汇编:
现在我们将其内联,看看调用中有什么不同:
以及例程本身:
它们对我来说都是一样的,所以我将坚持我最初的假设并说它们不被支持。
顺便说一句:这是 Delphi 2009 中的内容。
My guess is probably not since inline is only a suggestion, but lets find out.
A simple recursive factorial routine:
Here is the disassembly of the call to it:
And the disassembly of the routine itself:
Now we make it inline and see what is different in the call:
And the routine itself:
And they both appear the same to me, so I am going to stick with my original hypothesis and say they are not supported.
BTW: this is in Delphi 2009.