字节对齐问题
dwing吧
全部回复
仅看楼主
level 1
orange9angel 楼主
#if defined(__GNUC__)
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
#define ATTRIBUTE_PACKED __attribute__ ((packed))
#define PRAGMA_PACK 0
#endif
#endif
#if !defined(ATTRIBUTE_PACKED)
#define ATTRIBUTE_PACKED
#define PRAGMA_PACK 1
#endif
#if PRAGMA_PACK
#pragma pack(1)
#endif
typedef struct {
   unsigned int x1 : 1;
   unsigned int x2 : 1;
   unsigned int x3 : 1;
   unsigned int x4 : 1;
   unsigned int x5 : 1;
   unsigned int x6 : 1;
   unsigned int x7 : 1;
   unsigned int x8 : 1;
} ATTRIBUTE_PACKED playback_type_t;
#if PRAGMA_PACK
#pragma pack()
#endif
gcc编译出来sizeof(playback_type_t)是1字节,vc 编译器一字节对齐了还是4字节,如何能变成一字节?
2011年04月06日 02点04分 1
level 1
orange9angel 楼主
BTW:这个结构体通过memcpy赋值,所以必须是一字节对齐,否则结构体值就错了
2011年04月06日 02点04分 2
level 9
因为你用了unsigned int? 换char试试。
2011年04月06日 04点04分 3
level 1
orange9angel 楼主
换unsigned char可以了,以前还真没注意到有这个事情
2011年04月06日 05点04分 4
1