4

我已经搜索和搜索,但我还没有找到一个可以做我需要做的例子。
我发现 如何在 Python 中表示“枚举”? 在这里,但它不包括 ctypes.Structure。我还在 SO 上找到 了 Using enums in ctypes.Structure here,但它包含了我不熟悉的指针。

我有一个包含 typedef 枚举的头文件,我需要在 Python 文件的 ctypes.Structure 中使用它。

C++头文件:

typedef enum {

        ID_UNUSED,
        ID_DEVICE_NAME,
        ID_SCSI,
        ID_DEVICE_NUM,
} id_type_et; 

Python文件(我目前正在这样做的方式):

class IdTypeEt(ctypes.Structure):

        _pack_ = 1
        _fields_ = [ ("ID_UNUSED", ctypes.c_int32),
            ("ID_DEVICE_NAME", ctypes.c_char*64),
            ("ID_SCSI", ctypes.c_int32),
            ("ID_DEVICE_NUM", ctypes.c_int32) ]

任何建议将不胜感激。越简单越好。

4

1 回答 1

5

Anenum不是结构,它是具有预定义值集(枚举器常量)的整数类型。用 表示它是没有意义的ctypes.Structure。你正在寻找这样的东西:

from ctypes import c_int

id_type_et = c_int
ID_UNUSED = id_type_et(0)
ID_DEVICE_NAME = id_type_et(1)
ID_SCSI = id_type_et(2)
ID_DEVICE_NUM = id_type_et(3)
于 2013-05-17T17:12:05.680 回答