【发布时间】:2012-08-01 21:46:16
【问题描述】:
我一直在尝试查找此问题,但没有找到可行的解决方案。我的编译器忽略了 #pragma pack(push) #pragma pack(2) 和 __ 属性 __ ((aligned (2), packed)) 也不能解决问题。堆栈是 8 字节对齐的,并且想要将某些结构转换为 2 字节对齐。 -fpack-struct 有效,但它会影响所有结构。
我想使用#pragma pack。
我正在 SDK 13.3 eclipse IDE GCC #4.1.2 中编写 xilinx microblaze
我想我不明白是什么让编译器忽略了 Pragma 包。我不想关闭警告我想使用它。
#pragma pack(push)
#pragma pack(2)
struct _Size_Test
{
union
{
struct{
int8 x;
int8 y;
};
int16 z;
};
}Size_Test;
#pragma pack(pop)
sizeof(Size_test) = 4 当它应该是 2
添加属性((aligned(2),packed)) 不起作用
struct _Size_Test
{
union
{
struct{
int8 x;
int8 y;
};
int16 z;
};
}Size_Test _attribute_((aligned(2),packed));
【问题讨论】:
-
请向我们展示一些演示问题的代码。小心
#pragma pack;见this question。