我可以强制编译器不优化尾递归吗?
想象一下这段代码:
int foo() {
return foo();
}
编译器可以优化它。我可以强制编译器为 foo 使用新的堆栈帧,而不是使用相同的堆栈帧(根据情况,因此完全禁用优化不算在内)?
Imagine this code:
int foo() {
return foo();
}
The compiler can optimize this. Can I force the compiler to use a new stack frame for foo, instead of using the same stack frame (per case, so disabling optimization completely doesn't count)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,使用
-fno-optimize-sibling-calls
选项。Yes, with
-fno-optimize-sibling-calls
option.在 gcc 中,尝试:
In gcc, try either: