关于冒号的简单C语法问题

我刚刚看到一个代码片段,其中包含一段从未见过的语法。
布尔开始了什么:1;意思?我发现它在头文件中的类定义中。
struct record {
    char *name;
    int refcount : 4;
    unsigned dirty : 1;
};

那些是位域;该数字给出字段的确切大小(以位为单位)。 (有关详细信息,请参阅C上的任何完整的书籍。)位域可用于节省具有几个二进制标志或其他小字段的结构中的空间,并且还可以使用它们来尝试符合外部施加的存储布局。 (他们在后一个任务中的成功可以通过在某些机器上从左到右分配位置字段并在其他机器上从左到右分配这一事实得到缓解)。

请注意,用于指定字段大小的冒号符号仅在结构(和工会)中有效;您不能使用此机制来指定任意变量的大小。

>参考文献:K& R1 Sec。 6.7 pp。136-8
> K& R2 Sec。 6.9 pp。149-50
> ISO Sec。 6.5.2.1
> H& S Sec。 5.6.5 pp。136-8

翻译自:https://stackoverflow.com/questions/2235325/simple-c-syntax-question-about-colon

转载注明原文:关于冒号的简单C语法问题