当前位置:嗨网首页>书籍在线阅读

24-结构中的位字段

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.4.6 结构中的位字段

与C语言一样,C++也允许指定占用特定位数的结构成员,这使得创建与某个硬件设备上的寄存器对应的数据结构非常方便。字段的类型应为整型或枚举(稍后将介绍),接下来是冒号,冒号后面是一个数字,它指定了使用的位数。可以使用没有名称的字段来提供间距。每个成员都被称为位字段(bit field)。下面是一个例子:

struct torgle_register
{
    unsigned int SN : 4;  // 4 bits for SN value
    unsigned int : 4;     // 4 bits unused
    bool goodIn : 1;      // valid input (1 bit)
    bool goodTorgle : 1;  // successful torgling
};

可以像通常那样初始化这些字段,还可以使用标准的结构表示法来访问位字段:

torgle_register tr = { 14, true, false };
...
if (tr.goodIn) // if statement covered in Chapter 6
...

位字段通常用在低级编程中。一般来说,可以使用整型和附录E介绍的按位运算符来代替这种方式。