gpt4 book ai didi

c - GCC 的递归和 `static` 关键字

转载 作者:行者123 更新时间:2023-12-04 10:46:59 24 4
gpt4 key购买 nike

我最近读了几个声明为static的递归函数。

在函数声明前添加static 是否有助于GCC 优化尾递归函数?这是获得优化所必需的吗?

最佳答案

我看不出有任何理由可以让static 函数特别有助于编译器优化递归调用。

马上,您所看到的递归函数听起来更有可能只是编译单元内部的。递归函数经常需要一个比想要向程序的其余部分公开的接口(interface)更丰富的接口(interface)——例如,可能有额外的参数仅供递归调用使用,或者来自的返回值可能需要调整一般调用,以适应想要呈现给其余代码的抽象。因此,通常编写一个包装函数来为额外参数设置默认值,并通常将递归函数的接口(interface)调整为对外部有意义的好东西。

既然递归函数只被它自己和包装函数调用,那么声明它是很自然的 static -- 不是因为递归本身,而是为了防止污染全局命名空间用它。编译器也有可能对静态函数使用更有效的调用约定(适应特定的函数体),因为它知道所有的调用点并且不必遵循让单独编译的代码调用它的 ABI。

关于c - GCC 的递归和 `static` 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com