使用结构体定义中的指针枚举

问题描述:

我正在使用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枚举。

+0

哦,好吧,这是有道理的。所以第二个是一个指向返回一个foo枚举的函数的指针,它输入一个指向bar类型struct的指针,是正确的? – Andrew

+2

@安德鲁,这是正确的。 –