У меня есть библиотека с такими структурами:
#define __aligned_u64 __u64 __attribute__((aligned(8)))
struct my_struct {
uint32_t a;
uint32_t b;
uint8_t c[8];
uint32_t d;
uint32_t e;
__aligned_u64 f;
__aligned_u64 g;
uint64_t h;
...
} __attribute__((aligned(8)));
Я хочу проанализировать ее с помощью структуры ctypes.Я думаю, что атрибут выравнивания структуры (в конце) не важен для структуры Python (не путать с packed
).
Но я подозреваю, что выравнивание полей f
и g
(тот же __aligned_u64
, используемый в ядре Linux ) может мешать расположению байтов, добавляя некоторый потенциальный заполнитель после поля e
.Я не видел никакой опции в Структуре, чтобы определить это.
Есть идеи?Альтернативы?Я бы хотел, чтобы он был портативным ...