使用结构体定义中的指针枚举
问题描述:
我正在使用ctypes模块创建对python中动态库的访问。虽然在我的python实现中复制了一些tydef'd结构,但我遇到了一些代码,这让我难以理解发生了什么。基本上我有什么是使用结构体定义中的指针枚举
enum foo {
a,
b,
c,
};
typedef struct barStruct bar;
struct barStruct{
enum foo (*lem)();
enum foo (*baz)(bar *next);
}
在一个头文件。
我想了解结构定义中的两个枚举调用。我认为第一个是创建一个名为lem
的指针,它必须指向枚举中包含的值(所以我基本上忽略了最后的开放/关闭括号)。当我注意到第二个,在括号中有另一个指针时,我对于发生了什么感到非常困惑,并怀疑我的猜测是第一个意思。
我很抱歉,如果这个问题已经有一个答案(我敢肯定它的确如此),但不幸的是我想不出如何有效地搜索我需要的东西。
答
那些不是“枚举调用”,那些声明结构中的两个成员,指向函数的成员。
例如
enum foo (*lem)();
声明了一个结构构件变量lem
是一个指向函数获取不确定数目的参数,并且返回一个foo
枚举。
哦,好吧,这是有道理的。所以第二个是一个指向返回一个foo枚举的函数的指针,它输入一个指向bar类型struct的指针,是正确的? – Andrew
@安德鲁,这是正确的。 –