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

2 c gcc tail-recursion clang

想象一下这段代码:

int foo() {
  return foo();
}
Run Code Online (Sandbox Code Playgroud)

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

小智 8

是的,有-fno-optimize-sibling-calls选择权.