c - 是否可以在 GCC/Clang 上强制进行尾调用优化?

标签 c clang tail-call-optimization

我正在尝试尽可能多地使用 C 编写函数式风格的程序。 我知道像 GCC/Clang 这样的优秀编译器会默默地进行尾调用优化,但不能保证。是否有任何选项可以强制对编译器进行尾调用优化? (当然只有当它在自己的末尾被调用时)

最佳答案

Clang 13“musttail”属性强制尾递归函数中的尾调用优化,即使优化被禁用也是如此。

https://clang.llvm.org/docs/AttributeReference.html#musttail

用法:

int f(int x) {
  ...
  __attribute__((musttail)) return f(x-1);
}

关于c - 是否可以在 GCC/Clang 上强制进行尾调用优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4785066/

相关文章:

c - c中的表达式(i,j)代表什么意思?

c - 使用 Clang 进行动态检测

c - 如何解析DW_OP_call_frame_cfa?

f# - 什么推理导致 `Sequence expression containing recursive definition is compiled incorrectly`

bool AND 的 C 尾调用优化

c - 在 while 循环中使用 getch()

c - 如何纠正错误 1d 返回 1 退出状态,c

c++ - const 的未定义行为

gcc - 如何处理 OS X Yosemite Core 头文件中的非 gcc 兼容代码

functional-programming - 如何使用 Ocaml 中包含的尾调用获取堆栈跟踪?