Typedef一个位域变量

时间:2013-01-26 12:03:00

标签: c typedef bit-fields

我想要一个1位整数的typedef,所以我虽然这个typedef int:1 FLAG;但是我遇到错误,有没有办法可以这样做? 感谢

1 个答案:

答案 0 :(得分:6)

没有

C程序中最小的可寻址“事物”是字节char
char长度至少为8位 因此,您不能拥有少于8位的类型(或任何类型的对象)。

你可以做的是有一种类型的对象占用至少与char一样多的位并忽略大部分位

#include <limits.h>
#include <stdio.h>

struct OneBit {
    unsigned int value:1;
};
typedef struct OneBit onebit;

int main(void) {
    onebit x;
    x.value = 1;
    x.value++;
    printf("1 incremented is %u\n", x.value);
    printf("each object of type 'onebit' needs %d bytes (%d bits)\n",
          (int)sizeof x, CHAR_BIT * (int)sizeof x);
    return 0;
}

您可以在ideone上看到上面的代码。