4

我试图在不使用 typedef 的情况下返回指向函数的指针,但是编译器 (gcc) 发出了一个奇怪的错误,好像我无法进行那种设置一样。

备注:配合使用 typedef 代码工作。

代码:

void catch_and_return(void (*pf)(char*, char*, int&), char *name_one, char* name_two, int& number)(char*, char *, int&)
{
    pf(name_one, name_two, number);

    return pf;
}

错误:

'catch_and_return' 声明为返回函数的函数

你能解释一下为什么编译器不允许我这样做吗?谢谢!

4

1 回答 1

7

声明你的函数如下:

void (*catch_and_return(void (*pf)(char*, char*, int&), char *name_one, char* name_two, int& number))(char*, char *, int&)
{
    pf(name_one, name_two, number);

    return pf;
}

返回函数的函数的语法是:

返回函数返回类型(*函数名称参数列表))(函数返回参数列表

注意:这个声明乍一看可能很麻烦,typedef尽可能使用

于 2013-07-28T19:55:22.053 回答