枚举结构定义中的指针

时间:2016-09-15 13:51:01

标签: python c pointers enums ctypes

我正在使用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的指针,它必须指向枚举中包含的值(所以我基​​本上忽略了末尾的打开/关闭括号)。当我注意到第二个,在括号中有另一个指针时,我对于发生的事情感到非常困惑,并且怀疑我对第一个意味着什么的猜测。

如果这个问题已经有了答案(我确信这样做了),我很抱歉,但不幸的是我无法想到如何有效地搜索我需要的东西。

1 个答案:

答案 0 :(得分:3)

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

例如

enum foo (*lem)();

声明一个结构成员变量lem,它是一个指向函数的指针,该函数接受不确定数量的参数,返回一个foo枚举。