d的位域啊

原文
目前在预览开关后面,C位域不好,仅有好处:让编译器帮助打包私有的,仅供内部使用的结构到更紧凑的内存布局中.不保证公共abi.

D位域可能很好

假想的:

ulong fields {
    msb : 1,
    _reserved: 62,
    lsb: 1,
};

分解现有字段按定义来取结构中包含位字段.
应该允许ubyte a = fields.msb;,实际是

(fields >> 63) & 0x1

必须赋值括号内的所有位;总数必须加起来为type.sizeof*8.要明确列举保存位.顺序要严格定义为从上到下从msblsb.
添加新的反射特征来取这些字段.也许可用检查is(field==__bits)等等来识别它,然后调用allMembers来取,并从那取位计数,或可能是位内部成员按位报告的sizeof.
__traits(bitmask)这样的访问.大括号内的某些类型充当访问器返回类型.
位域当作分解现有域.
然后根据现有字段定义现有的反射,字段布局等,并提供新函数来取位的详细信息.

posted @ 2022-09-20 10:01  zjh6  阅读(20)  评论(0)    收藏  举报  来源