结构定义中带有指针的枚举

Enums with pointers in struct definitions

我正在使用 ctypes 模块在 python 中创建对动态库的访问。在我的 python 实现中复制一些 tydef 结构时,我遇到了一些代码,这些代码让我对正在发生的事情感到困惑。基本上我有的是

enum foo {
    a,
    b,
    c,
};

typedef struct barStruct bar;

struct barStruct{
    enum foo (*lem)();
    enum foo (*baz)(bar *next);
}

在头文件中。

我试图理解结构定义中的两个枚举调用。我认为第一个是创建一个名为 lem 的指针,它必须指向枚举中包含的值(所以我基​​本上忽略了末尾的 open/close 括号)。当我注意到第二个,括号中有另一个指针时,我对发生的事情感到非常困惑,并且怀疑我对第一个含义的猜测。

如果这个问题已经有了答案(我确信它有),我深表歉意,但不幸的是,我想不出如何有效地搜索我需要的东西。

那些不是 "enum calls",那些在结构中声明两个成员,成员是指向函数的指针。

例如

enum foo (*lem)();

声明了一个结构成员变量lem,它是一个指向参数数量不确定的函数的指针,并且returns一个foo枚举。