ctypes结构字段中的对齐方式

时间:2018-11-12 16:28:43

标签: python struct ctypes memory-alignment

我有一个结构如下的库:

#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混淆)。

但是我怀疑字段fg(相同的__aligned_u64 used in the Linux kernel)的对齐方式可能会弄乱字节的排列,从而增加了一些潜在的填充在字段e之后。我没有在“结构”中看到任何选项来定义它。

有什么想法吗?备择方案?我希望它是便携式的...

0 个答案:

没有答案