(对不起,这是一个示例测验,不能使用typedef:P)我正在尝试为以下函数编写声明:
功能:
接受指向函数的指针接受指向int的指针并返回指向int的指针.
返回指向函数的指针接受int并返回int.
这是我的代码:
int (* sigal(int *(*f)(int *)))(int);
Run Code Online (Sandbox Code Playgroud)
但是,这是一个语法错误.写它的正确方法是什么?
编辑:
错误似乎应该不存在f.我试过我的原始代码和
int (* sigal(int *(*)(int *)))(int);
在http://www.cdecl.org/上.后者通过了.
有什么问题的解释?
更新:
正如2501所说,错误似乎是解析器的味道.
写这个的正确方法是使用typedef:
typedef int*(*fp)(int*);
typedef int(*fi)(int);
fi function(fp p);
Run Code Online (Sandbox Code Playgroud)
没有typedef写这个的正确方法是:
int ( *( function( int*(*p)(int*) ) ) )(int);
Run Code Online (Sandbox Code Playgroud)