关于结构体定义的愚蠢问题

wendy_welcom 2007-09-21 03:31:39
typedef struct CTRL {
UCHAR exst_cd :2;
UCHAR ackn_cd :1;
UCHAR state_cd :3;
USINT slot_no;
USINT send_evt;
}CTRL0

" UCHAR exst_cd :2; " 以前没见过结构体里面的成员带冒号和数值的, 能解释一下这是什么么,看不懂了。

谢谢
...全文
173 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wendy_welcom 2007-09-24
  • 打赏
  • 举报
回复
谢谢 Treazy(活着)
pbdwadr 2007-09-22
  • 打赏
  • 举报
回复
从来没见过,更没用过。。。
Treazy 2007-09-22
  • 打赏
  • 举报
回复
typedef struct CTRL {
UCHAR exst_cd :2;
UCHAR ackn_cd :1;
UCHAR state_cd :3;
USINT slot_no;
USINT send_evt;
}CTRL0 ;
这是位段的定义方式,具体可以参考任何一本C语言的书,都有比较详细的讲解。
简单的说,UCHAR代表 结构成员变量的类型,而exst_cd,ackn_cd等是此成员在这个类型中所占的位数,上面的类型是uchar,是1个字节8位,而exst_cd占最低2位,ackn_cd占1位,state_cd 占3位等等。

位段的定义还有一些比较细节的地方,如果楼主想了解的话可以看一下书!
wendy_welcom 2007-09-21
  • 打赏
  • 举报
回复
系统分配空间时,不是按uchar类型开辟一个8bit的空间存exst_ce么?
awperpvip 2007-09-21
  • 打赏
  • 举报
回复
UCHAR exst_cd :2;
exst_cd 占2bit
xugang_2001 2007-09-21
  • 打赏
  • 举报
回复
意思是:声明exst_cd在内存中只占2个bit(本来是8个bit)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧