读书人

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

发布时间: 2012-02-29 16:44:11 作者: rapoo

关于结构体定义的愚蠢问题
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; " 以前没见过结构体里面的成员带冒号和数值的, 能解释一下这是什么么,看不懂了。

谢谢

[解决办法]
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位等等。

位段的定义还有一些比较细节的地方,如果楼主想了解的话可以看一下书!

读书人网 >C语言

热点推荐