如何声明一个函数返回一个指向函数的指针返回指向int [3]

我在尝试以下声明:

int (*(*((*foo)(const void *))()))[3];

int (*(*(*foo)(const void *)()))[3];

但编译器给我一个错误:

error: 'foo' declared as function returning a function

DEMO

在c ++中可以吗?


派生声明的工作方式是用声明中的新事物替换声明中的标识符。 例如,在这里的第一步,要从“指向int [3]的指针”到“函数返回指向int [3]的指针”,我们接受“指向int [3]的指针”,并将标识符更改为是一个函数声明符。

指向int [3]的指针: int(* name)[3];

一个函数返回:int(* name() )[3];

指向该指针的指针:int(* (* name) ())[3] - 否则所需的括号*绑定到另一个*而不是name

一个函数返回:int(*(* name() )())[3]


喜欢这个:

int (*(*f())())[10];

甚至更干净(有点):

using array_type = int (*)[10];
using return_type = array_type (*)();

return_type f();

使用cdecl。

cdecl> declare f as function returning pointer to function returning pointer to array 3 of int
int (*(*f())())[3]
链接地址: http://www.djcxy.com/p/78655.html

上一篇: How to declare a function return a pointer to function return pointer to int[3]

下一篇: Proper way to define type (typedef vs #define)