gpt4 book ai didi

c++ - 如何使用 Python 2.7.2 将 C++ 枚举转换为 ctypes.Structure?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:12 25 4
gpt4 key购买 nike

我找了又找,但我还没有找到一个可以完成我需要做的事情的例子。
我发现 How can I represent an 'Enum' in Python?在这里,但它不包括 ctypes.Structure。我还发现 Using enums in ctypes.Structure在这里,但它包含我不熟悉的指针。

我有一个包含 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) ]

如有任何建议,我们将不胜感激。越简单越好。

最佳答案

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)

关于c++ - 如何使用 Python 2.7.2 将 C++ 枚举转换为 ctypes.Structure?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16614354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com