什么:在C中意味着什么?

A1A*_*3A4 2 c struct qemu bit-fields

在查看QEMU的源包时,我在exec.c文件中找到:

struct PhysPageEntry {
    /* How many bits skip to next level (in units of L2_SIZE). 0 for a leaf. */
    uint32_t skip : 6;
     /* index into phys_sections (!skip) or phys_map_nodes (skip) */
    uint32_t ptr : 26;
};
Run Code Online (Sandbox Code Playgroud)

我想知道:运算符意味着什么.我在C的语法定义列表中找不到它.

hac*_*cks 8

这是一个用位字段声明的结构,结构成员称为位字段:使用结构声明设置位字段,该结构声明标记每个字段并确定其宽度.上述定义引起PhysPageEntry包含一个6位字段和一个26位域成员即skipptr分别.它的签名是

struct
{
      type [member_name] : width ;
};  
Run Code Online (Sandbox Code Playgroud)

这里宽度是位域中的位数.宽度必须小于或等于指定类型的位宽.