gpt4 book ai didi

c++ - Xilinx Microblaze 结构填充/包装

转载 作者:行者123 更新时间:2023-11-30 19:23:27 25 4
gpt4 key购买 nike

我有两个结构:

Struct _size1 {
union{
short a;
struct {
char b;
char c;
}d;
struct {
char x;
char y;
}z;
};

union{
short a1;
struct {
char b1;
char c1;
}d1;
struct {
char x1;
char y1;
}z1;
};
}size1;

和:

Struct _size2 {
short num; //2 bytes
short num2; //2 bytes
short num3; //2 bytes
size1 st_size; //4 bytes

}size2;

sizeof(size1) = 4;sizeof(size2) = 12;

对于 size2,我尝试获取的大小是 10。

它在 num3 和 st_size 之间添加两个字节的填充。Microblaze Compiler 不支持 Pragma Pack

我正在尝试使用属性((packed)),但没有取得任何成功...

Struct _size2 {
short num; //2 bytes
short num2; //2 bytes
short num3; //2 bytes
size1 st_size; //4 bytes

}size2 __attribute__((packed));

我不确定出了什么问题,或者这是否有效。

谢谢

最佳答案

您正在使用 unsigned int 位字段类型,在 gcc/Microblaze 上为 4 个字节。

使用 gcc 实现定义的 unsigned Short 位字段类型,使 gcc/Microblaze 的大小为 2 个字节。

关于c++ - Xilinx Microblaze 结构填充/包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833534/

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