3 回答
TA贡献1864条经验 获得超6个赞
正如其他人所指出的那样,cdecl是这项工作的正确工具。
如果您想在没有cdecl帮助的情况下理解这种声明,请尝试从内到外和从右到左阅读
从列表中取一个随机示例从 X开始,这是声明/定义的标识符(以及最里面的标识符):char (*(*X[3])())[5];
char (*(*X[3])())[5];
^
X是
X[3]
^^^
X是 3的数组
(*X[3])
^ /* the parenthesis group the sub-expression */
X是一个3 指针的数组
(*X[3])()
^^
X是一个3个指针的数组,用于 接受未指定(但固定)数量的参数
(*(*X[3])())
^ /* more grouping parenthesis */
X是一个由3个指针组成的数组,用于接受未指定(但固定)数量的参数 并返回指针
(*(*X[3])())[5]
^^^
X是一个3个指针的数组,用于接受未指定(但固定)数量的参数并返回指向 5的数组的指针
char (*(*X[3])())[5];
^^^^ ^
X是一个3个指针的数组,用于接受未指定(但固定)数量的参数并返回指向5个 char 数组的指针。
TA贡献1851条经验 获得超3个赞
听起来像是cdecl工具的工作:
cdecl> explain char (*(*f())[])();
declare f as function returning pointer to array of pointer to function returning char
我四处寻找该工具的官方主页,但找不到一个看似真实的主页。在Linux中,您通常可以期望您选择的分发包含该工具,因此我只是安装它以生成上述示例。
- 3 回答
- 0 关注
- 406 浏览
添加回答
举报