我想要一个1位整数的typedef,所以我虽然这个typedef int:1 FLAG;
但是我遇到错误,有没有办法可以这样做?
感谢
答案 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上看到上面的代码。