gpt4 book ai didi

c - typedef A (*AF)() 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 16:36:56 25 4
gpt4 key购买 nike

我的主要编程语言, ,最近开源了。为了改进它,我正在研究用 C 编写的源代码。

但自从我阅读或编写 C 以来已经有很长(!)的时间了,那时我什至都不擅长。这个特定代码库的编写方式是......特殊的(许多 APL 解释器,其中有 J,其源代码是用高级“APL 风格”编写的,即使是用低级语言编写的;非常简洁,避免冗余,大量使用宏等)

目前,我正在尝试了解它使用的基本数据结构。最基本的是the typedef A (“A”代表“array”):

typedef struct {I k,flag,m,t,c,n,r,s[1];}* A;

我明白了。但我正在努力思考什么 AF是,两行之后:

typedef A (*AF)();

这个语法是什么意思?特别是,当事物后来被声明为“类型 AF”时,这意味着什么? AF 只是指向 A 的指针吗?

我的直接目标是解释内存转储,其中包括 type V 的内容(对于“verb ”),其前两个成员是 AF:

typedef struct {AF f1,f2;A f,g,h;I flag,mr,lr,rr,fdep;C id;} V;

但我的总体目标远不止于此,所以请详细说明 AF 定义中使用的语法。

最佳答案

正如已经回答的那样,AF(数组函数)是一个指向函数的指针,该函数返回一个A(数组对象 指针)。

V(Verb,即函数对象)的定义中,有两个AFv1 是指向 monadic 函数实现的指针,v2 是指向 dyadic 函数的指针。如果 V 表示一个运算符(副词),那么 v1v2 仍然分别是 monadic 和 dyadic 实现,而且 f gh 可用于保存(柯里化(Currying))左和/或右参数。 mr lrrr 分别是一元秩、左秩和右秩。 id 包含一个操作码,因此仍然可以从该结构中恢复可打印的表示形式。

如果 f gh 中的任何操作数本身就是动词,则它们的 V 结构将是在 *f 之后的 f->k 个字节处,分别用于 g 和 h,就像所有“有效载荷数据”一样。

我发现一个对理解 J 实现中的基本类型非常有用的链接是 Roger Hui BAA talk notes (2.69M 扫描的 pdf)。完整的文章在Implementation of J (html).

您可能还会找到 my primitive clone有启发性的。另请参阅我的问题 herehere .

关于c - typedef A (*AF)() 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com