我有一个结构如下的库:
#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
used in the Linux kernel)的对齐方式可能会弄乱字节的排列,从而增加了一些潜在的填充在字段e
之后。我没有在“结构”中看到任何选项来定义它。
有什么想法吗?备择方案?我希望它是便携式的...