我有一个定义如下的位域(我希望它的大小:1):
#pragma pack(push, 1)
typedef struct
{
unsigned boolFoo : 1;
unsigned pLACEHOLDER : 7;
} KnownBitFlags1_t;
#pragma pack(pop)
但经过痛苦的调试后,我终于发现sizeof(KnownBitFlags1)
返回4
为什么?
我也尝试过:
typedef struct
{
unsigned boolFoo : 1;
unsigned pLACEHOLDER : 7;
} __attribute__((packed, aligned(1))) KnownBitFlags1_t;
无论如何,将结构的大小保持为4。
那么我该怎样做才能停止填充这个结构的数组呢?
答案 0 :(得分:4)
这取决于基础类型。将unsigned
更改为unsigned char
:
typedef struct {
unsigned char boolFoo : 1;
unsigned char pLACEHOLDER : 7;
} KnownBitFlags1_t;