gpt4 book ai didi

c++ - 强制结构大小为 8 字节

转载 作者:搜寻专家 更新时间:2023-10-31 00:32:53 24 4
gpt4 key购买 nike

我有一个应该是 8 字节大小的结构。

struct Slot {
uint8_t T;
uint8_t S;
uint32_t O : 24;
uint32_t L : 24;
}

但是,sizeof(Slot) 告诉我大小是 12 字节。因此编译器似乎填充了数据,尽管这不是必需的(可能是因为 24 位无法正确对齐)。

一个 hacky 解决方案是使用 3 个单字节字段而不是单个三字节字段:

struct Slot2 {
uint8_t T;
uint8_t S;
uint8_t O1;
uint8_t O2;
uint8_t O3;
uint8_t L1;
uint8_t L2;
uint8_t L3;
}; // sizeof(Slot2) = 8

还有其他方法可以实现吗?

最佳答案

这在 MSVC 上给出了 8 个字节的大小,没有打包 pragma。

struct Slot {
uint32_t O : 24;
uint32_t T : 8;
uint32_t L : 24;
uint32_t S : 8;
};

关于c++ - 强制结构大小为 8 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30213256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com