Союз-в-синтаксическая структура в под
Быстрый вопрос о синтаксисе ctypes, поскольку документация для Союзов не понятна новичку вроде меня.
Скажем, я хочу реализовать входную структуру (см. здесь):
typedef struct tagINPUT {
DWORD type;
union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
} ;
} INPUT, *PINPUT;
Должен ли я или мне нужно изменить следующий код?
class INPUTTYPE(Union):
_fields_ = [("mi", MOUSEINPUT),
("ki", KEYBDINPUT),
("hi", HARDWAREINPUT)]
class INPUT(Structure):
_fields_ = [("type", DWORD),
(INPUTTYPE)]
Не уверен, что у меня может быть Безымянное поле для объединения, но добавление имени, которое не определено в Win32API, кажется опасным.
Спасибо,
Майк
1 ответ:
Синтаксис вашей структуры недопустим:
AttributeError: '_fields_' must be a sequence of pairs
Я полагаю, что вы хотите использовать атрибут anonymous в ваших ctypes.Структура. Похоже, что документация ctypes создает структуру TYPEDESC (которая очень похожа по конструкции на tagINPUT).
Также обратите внимание, что вам придется определить DWORD как базовый тип для вашей платформы.