【发布时间】:2014-03-29 00:53:59
【问题描述】:
在 GCC 手册中,
-foptimize-sibling-calls
优化兄弟和尾递归调用。
例如,我知道尾递归调用
int sum(int n) { return n == 1 ? 1:n +总和(n-1); }
但是,兄弟调用是什么意思?
【问题讨论】:
-
First Google hit 显然有一些信息
-
实际上,GCC 是“tail”的同义词(他们在内部文档中将其称为 a.k.a.tail)。形式上,some function具有相同大小的返回类型和具有相同总字长的参数列表。因此,例如
int foo(char, char)和int bar(short)将是兄弟姐妹,并且可以进行尾部优化(因此foo调用bar而调用foo原则上会起作用)。 -
@AngewisnolongerproudofSO 这个问题是谷歌第一个搜索“兄弟调用函数含义”的问题,所以它也应该有一些信息。
标签: c++ gcc compiler-optimization tail-recursion