我遇到了类似“ char var:3”的语句这个C语句做什么?

问题描述

在进行一些C代码时,我遇到了类似的语句

char var1 : num1,char var2: num2;

从上下文来看,数字似乎是num1是字节大小。 我找不到任何解释。

解决方法

这可能是C编程语言中称为 bit-field 的一部分。 位字段只能在struct之内声明,例如

struct {
   unsigned int flag  : 1;    /* A one bit flag */
   unsigned int value : 5;    /* A 5 bit value */
} option;

if (option.flag == 1)
    option.value = 7;

关于位域的所有内容均由实现定义。目的是使编译器将位域安排得尽可能紧凑。例如。上面的内容很适合一个字节。