我试图在不使用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'声明为函数返回函数
你能解释一下为什么编译器不允许我这样做吗?谢谢!
答案 0 :(得分: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;
}
返回函数的函数的语法是:
return-function-return-type (* function-name ( parameter-list ))( function-to-返回参数列表)
注意:乍一看这个声明很麻烦,只要有可能就使用typedef