我可以强制编译器不优化尾递归吗?

时间:2011-09-06 22:57:14

标签: c gcc clang tail-recursion

想象一下这段代码:

int foo() {
  return foo();
}

编译器可以对此进行优化。我是否可以强制编译器为foo使用新的堆栈帧,而不是使用相同的堆栈帧(每种情况下,因此完全禁用优化不计算在内)?

2 个答案:

答案 0 :(得分:8)

是的,-fno-optimize-sibling-calls选项。

答案 1 :(得分:1)

在gcc中,尝试:

  • -O0
  • -fno-优化同胞通话