我刚刚看到一个代码片段,其中有一段我以前从未见过的语法。
什么是bool start : 1;
意思是?我在头文件的类定义中找到了它。
struct record {
char *name;
int refcount : 4;
unsigned dirty : 1;
};
这些是位字段;该数字给出了字段的确切大小(以位为单位)。 (有关详细信息,请参阅任何有关 C 的完整书籍。)位字段可用于节省具有多个二进制标志或其他小字段的结构中的空间,并且它们还可以用于尝试符合外部强加的存储布局。 (他们在后一项任务上的成功受到以下事实的影响:位字段在某些机器上从左到右分配,而在其他机器上从右到左分配)。
请注意,用于指定字段大小(以位为单位)的冒号表示法仅在结构(和联合)中有效;您不能使用此机制来指定任意变量的大小。
- 参考文献:K&R1 Sec. 6.7 第 136-8 页
- K&R2 段6.9 页 149-50
- ISO 秒。 6.5.2.1
- H&S Sec. 5.6.5 第 136-8 页
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)