sizeof打包位域返回4,但我期望是1.它是怎么来的,我怎么能解决
sizeof packed bitfield returns 4 but I expect 1. How does it come and how I can fix?
我有一个位域定义如下(我希望它的大小为: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
那么我怎么做才能停止填充这种结构的数组呢?
这取决于底层类型。Change unsigned
to unsigned char
:
typedef struct {
unsigned char boolFoo : 1;
unsigned char pLACEHOLDER : 7;
} KnownBitFlags1_t;
相关文章:
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 我们怎么能 me 字符数组只接受 C++ 中的字母
- 你怎么能emplace_back错误的类型?
- 我怎么能有一个以2D数组为参数的函数,而数组有一个我想更改的参数/维度
- 我怎么能把它转换成c++呢
- 我有一个调用ID3D11DeviceContext::CopySubresourceRegion的循环.我怎么能强制等待
- 类定义怎么能不占用内存?
- 怎么能用memcpy复制工会简单的成员?
- 当 do-while 再次启动时,对象将被删除.我怎么能阻止它
- 指针怎么能有一个字符串作为它的值
- 一个函数怎么能完成它的目标,只是在返回主函数后崩溃?
- 这两个指针怎么能有相同的值
- glTranslatef拉伸我的球体,我怎么能不拉伸它就平移球体
- 我怎么能像 numpy 那样从 MxN 矩阵中减去 1xN 特征矩阵
- 我怎么能写一个长度函数来返回间隔的长度
- 我怎么能设法从我的代码中获得复数的答案
- 我怎么能在不使用BITSet的情况下知道C 中的位状态
- 如果指针已经被删除,指针容器怎么能拥有指针的所有权
- sizeof打包位域返回4,但我期望是1.它是怎么来的,我怎么能解决