读书人

能不能这么定义位字段

发布时间: 2014-01-14 23:14:00 作者: rapoo

能不能这样定义位字段?
我想把位字段和普通字段一同定义在一个结构中,可以吗?

另外,位字段可不可以跨字节?

比如,我定义这样一个结构变量:

struct
{
unsigned int operate:6;//操作码,1为删除,2为恢复(或造词),3为屏蔽,4为解除屏蔽,5为移序
unsigned int xh:2;
unsigned int index:24;
USHORT from;
USHORT to;
};
这样定义,在VS2008中编译成功了,总共占用8个字节,也符合的预想,我的问题是:能不能这样做?

第二个问题是:我的index变量占用24位宽,是在跨字节的了,这样定义可不可以?

[解决办法]
可以的

引用:
我想把位字段和普通字段一同定义在一个结构中,可以吗?

另外,位字段可不可以跨字节?

比如,我定义这样一个结构变量:

struct
{
unsigned int operate:6;//操作码,1为删除,2为恢复(或造词),3为屏蔽,4为解除屏蔽,5为移序
unsigned int xh:2;
unsigned int index:24;
USHORT from;
USHORT to;
};
这样定义,在VS2008中编译成功了,总共占用8个字节,也符合的预想,我的问题是:能不能这样做?

第二个问题是:我的index变量占用24位宽,是在跨字节的了,这样定义可不可以?

[解决办法]
跨字节,是可以的,只要位段长度,不超过最大位段长度。

另外,如果想让位段不连续,添加一个无名的0 长度位段。

读书人网 >C语言

热点推荐