我正在使用ctypes模块创建对python中动态库的访问。虽然在我的python实现中复制了一些tydef结构,但我遇到了一些代码,让我难以理解正在发生的事情。基本上我所拥有的是
enum foo {
a,
b,
c,
};
typedef struct barStruct bar;
struct barStruct{
enum foo (*lem)();
enum foo (*baz)(bar *next);
}
在头文件中。
我试图理解struct定义中的两个enum调用。我认为第一个是创建一个名为lem
的指针,它必须指向枚举中包含的值(所以我基本上忽略了末尾的打开/关闭括号)。当我注意到第二个,在括号中有另一个指针时,我对于发生的事情感到非常困惑,并且怀疑我对第一个意味着什么的猜测。
如果这个问题已经有了答案(我确信这样做了),我很抱歉,但不幸的是我无法想到如何有效地搜索我需要的东西。
答案 0 :(得分:3)
那些不是" enum调用",那些是在结构中声明两个成员,成员是指向函数的指针。
例如
enum foo (*lem)();
声明一个结构成员变量lem
,它是一个指向函数的指针,该函数接受不确定数量的参数,返回一个foo
枚举。