我正在使用高级Mac OS X编程书,一次练习让我跌跌撞撞 .
Use typedefs to simplify the following block reference declaration:
int (^(*(^get_block_factory_funcptr)(void))(int))(void);
以下是我对声明的理解:
函数不带参数,返回一个返回void指针的块,它是一个指向一个函数的指针,该函数接受一个参数的int并返回一个没有参数的块,返回一个int .
既然如此,我有这两个typedef
typedef void *(^get_block_factory_funcptr)(void);
typedef int (^myBlock(int))(void);
但是,我不知道如何将它们组合成一个声明,任何帮助表示赞赏
1 回答
如果我正确读取它,它是一个返回一个返回块的函数指针的块 . 这个名字是一个提示 .
解决问题的一种方法是从最终结果开始并向后工作 . 或者,从内部开始向外工作 .
什么是
get_block_factory_funcptr
?这是一个块:它有什么作用?它需要一个void,它返回一个"Block Factory"函数指针 . 我们宣布
MyBlock
:什么是
FactoryFuncPtr
?需要int
并返回另一个块:什么是
OuterBlock
?需要void
并返回int
:这些是相反顺序的声明 .
编辑:一个工作的例子 .