4
我已經搜索和搜索,但我還沒有找到一個例子,做我需要做的。
我在SO上發現了 How can I represent an 'Enum' in Python? 但它不包括ctypes.Structure。我還發現 Using enums in ctypes.Structure 在這裏,但它包括指針,我不熟悉。如何使用Python 2.7.2將C++枚舉轉換爲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) ]
任何意見將不勝感激。越簡單越好。
它是安全的假設基礎值始終爲0,1,2,3,...? – 101
@figs如果C++頭看起來像OP顯示的,是的。如果第一個枚舉器沒有被賦予一個明確的值,那麼它保證爲0.如果後面的枚舉器沒有被賦予一個明確的值,那麼它肯定是'前一個枚舉器+1'。 – Angew