我已经搜索过,但我找不到一个能做我需要做的事的例子 我发现 How can I represent an 'Enum' in Python? 这里是SO,但它不包括ctypes.Structure。 我也找到了 Using enums in ctypes.Structure 在这里SO,但它包括指针,我不熟悉。
我有一个包含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) ]
任何建议都将不胜感激。越简单越好。
答案 0 :(得分:5)
enum
不是结构,它是具有预定义值集(枚举器常量)的整数类型。用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)