我刚刚看到了一个代码片段,其中包含以前从未见过的语法。bool start : 1;是什么意思?我在头文件的类定义中找到它。

最佳答案

struct record {
    char *name;
    int refcount : 4;
    unsigned dirty : 1;
};

这些是位字段;数字以位为单位给出字段的确切大小。 (有关详细信息,请参见有关C的所有完整书籍。)位域可用于节省具有几个二进制标志或其他小域的结构中的空间,也可用于尝试遵循外部施加的存储布局。 (通过在某些机器上从左到右分配位域,而在其他机器上从右到左分配位域,降低了它们在后一项任务上的成功)

注意,以位为单位指定字段大小的冒号仅在结构(和联合)中有效;您不能使用此机制来指定任意变量的大小。
  • 引用:K&R1秒。 6.7页136-8
  • K&R2秒6.9页149-50
  • ISO秒6.5.2.1
  • H&S秒5.6.5页136-8
  • 关于c++ - 有关冒号的简单C++语法问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2235325/

    10-11 22:39