首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

能不能这么定义位字段

2014-01-14 
能不能这样定义位字段?我想把位字段和普通字段一同定义在一个结构中,可以吗?另外,位字段可不可以跨字节?比

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

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

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

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 长度位段。

热点排行