d的位域啊
原文
目前在预览开关后面,C位域不好,仅有好处:让编译器帮助打包私有的,仅供内部使用的结构到更紧凑的内存布局中.不保证公共abi.
D位域可能很好
假想的:
ulong fields {
msb : 1,
_reserved: 62,
lsb: 1,
};
可分解现有字段按定义来取结构中包含的位字段.
应该允许ubyte a = fields.msb;,实际是
(fields >> 63) & 0x1
必须赋值括号内的所有位;总数必须加起来为type.sizeof*8.要明确列举保存位.顺序要严格定义为从上到下从msb到lsb.
添加新的反射特征来取这些字段.也许可用检查is(field==__bits)等等来识别它,然后调用allMembers来取,并从那取位计数,或可能是位内部成员按位报告的sizeof.
或__traits(bitmask)这样的访问.大括号内的某些类型充当访问器的返回类型.
把位域当作分解现有域.
然后根据现有字段定义现有的反射,字段布局等,并提供新函数来取位的详细信息.
浙公网安备 33010602011771号