C 语言——位域

位域声明

声明位域的形式如下:
  type [member_name] : width ;
type整数类型,决定了如何解释位域的值。类型可以是有符号整型、无符号整型。
member_name位域的名称
width位域中位的数量。宽度必须小于或等于指定类型的位宽度

class QObjectData {
public:
    virtual ~QObjectData() = 0;
    QObject *q_ptr;
    QObject *parent;
    QObjectList children;
 
    uint isWidget : 1;
    uint pendTimer : 1;
    uint blockSig : 1;
    uint wasDeleted : 1;
    uint ownObjectName : 1;
    uint sendChildEvents : 1;
    uint receiveChildEvents : 1;
    uint inEventHandler : 1; //only used if QT_JAMBI_BUILD
    uint inThreadChangeEvent : 1;
    uint hasGuards : 1; //true iff there is one or more QPointer attached to this object
    uint unused : 22;
    int postedEvents;
    QMetaObject *metaObject; // assert dynamic
};


(1)在类体中相邻定义的位域,如果可能的话,它们会被放在同一个整数的连续位中,并以此提供空间压缩。在不改变数据存储空间的情况下,增加位域定义,程序可实现二进制上的兼容。

(2)位域在内存中的位置是从低位向高位放置的。

(3)由于取地址操作符& 不能被应用在位域上,所以也没有能指向类的位域的指针。位域也不能是类的静态成员。

(4)一个位域必须存储在同一个字节中,不能跨两个字节,位域的长度也不能大于一个字节的长度。

(5)位域可以无位域名,这时它只用来作填充或调整位置,无名的位域是不能使用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值