我正在尝试尽可能多地使用 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/