【发布时间】:2011-01-24 17:32:27
【问题描述】:
我正在尝试尽可能多地使用 C 编写函数式程序。 我知道像 GCC/Clang 这样的编译器会默默地进行尾调用优化,但不能保证。是否有任何选项可以强制对编译器进行尾调用优化? (当然只有在它自己的末尾才被调用)
【问题讨论】:
-
编译器在这方面可能相当聪明,相信它。无需不可移植 hacks。
-
在您认为应该进行尾部优化但编译器无法执行此操作(无论出于何种原因)的情况下,您希望发生什么?
-
@Michael 如果无法完成强制尾调用优化,我预计会出现编译时错误。
-
您可以强制 GCC 为 TCO 提供编译器标志:-foptimize-sibling-calls(参见draketo.de/light/english/free-software/tco-debug)
标签: c clang tail-call-optimization