递归返回类型

时间:2010-12-21 11:11:11

标签: c++ c recursion typedef return-type

我刚刚浏览了Mark Probst's diploma thesis并填写了以下代码:

typedef void* cont(void);

for (;;)
{
    cp = (cont*)(*cp)();
}

我很确定演员应该阅读(cont),而不是(cont*),因为他解释道:

  

希望进行正确尾调用的函数返回要调用的函数的地址

cont已经是指向函数的指针。所以让我们改变这一行:

    cp = (cont)(*cp)();

现在我想知道,我们怎么能摆脱演员?可以cont定义,以便返回cont吗? typedef cont的外观如何?我们需要帮助器类型来实现这一目标吗?这不可能吗?

2 个答案:

答案 0 :(得分:1)

不,typedef void* cont(void); cont定义了返回void *的函数类型。我认为您将其与typedef void (*cont)(void);typedef void *(*cont)(void);混淆。

我不相信在这种情况下可以消除演员阵容的需要,但我愿意相信其他人。

答案 1 :(得分:1)

类型cont是一个返回void指针的函数。因此cont *是指向此类函数的指针,并且无法从演员表中移除*