我想要一个 1 位整数的 typedef,所以我想到了这个typedef int:1 FLAG;
,但我遇到了错误,有什么办法可以做到吗?谢谢
问问题
7590 次
1 回答
11
不。
C 程序中最小的可寻址“事物”是字节或char
.
Achar
至少有 8 位长。
因此,您不能拥有少于 8 位的类型(或任何类型的对象)。
你可以做的是有一种类型,它的对象至少占据与 a 一样多的位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运行。
于 2013-01-26T12:06:13.233 回答