函数声明返回另一个函数的指针

时间:2016-04-13 12:11:00

标签: c pointers

(对不起,这是一个示例测验,不能使用typedef:P)我试图为以下函数编写声明:

功能:

接受指向函数的指针,接受指向int的指针并返回指向int的指针。

返回指向函数的指针,接受int并返回int。

这是我的代码:

int (* sigal(int *(*f)(int *)))(int);

但是,这是一个语法错误。什么是正确的写作方式?

编辑:

错误似乎不应该是f。我尝试了原始代码和

int (* sigal(int *(*)(int *)))(int);

<{3>} http://www.cdecl.org/。后者通过了。

有关问题的解释是什么?

更新:

正如2501所说,错误似乎是解析器的味道。

1 个答案:

答案 0 :(得分:5)

正确的写法是使用typedef:

typedef int*(*fp)(int*);
typedef int(*fi)(int);

fi function(fp p);

没有typedef写这个的正确方法是:

int ( *( function( int*(*p)(int*) ) ) )(int);