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

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

2012-02-29 
关于结构体定义的愚蠢问题typedefstructCTRL{UCHARexst_cd:2UCHARackn_cd:1UCHARstate_cd:3USINTslot_n

关于结构体定义的愚蠢问题
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位等等。

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

热点排行