我想要在一个结构中定义一个3位的变量,我想像int x=5;那样使用它,而不是structName.x=5;,这就是我想说的例子:
typedef struct{
unsigned x:3;
} v3bits;
typedef v3bits.x uint3_t;
int main(){
uint3_t x=5;
return 0;
}我怎么能这么做呢?
发布于 2017-01-24 12:12:56
你不能。没有办法在C中创建一个3位的整数类型。你可以使用一个更宽的整数类型,比如uint8_t。
发布于 2017-01-24 14:21:44
不,至少在C中是不可能的。使用更宽类型的数据类型
发布于 2017-01-24 14:54:13
声明一个带有字段的结构:
类型定义结构{ ...unsigned x:3;} v3bits;
...and为它分配一个“别名”,v3bits,它引用一个(否则)未命名的类型"struct something“。这是可以的。然后,尝试使用字段而不是类型来创建新类型:
类型定义f v3bits.x uint3_t;(v3bits.x不是类型)
Typedef用于从其他类型名称创建新的类型名称-结果是只有一个短名称,而不是由(可能)几个部分组成的长名称。例如:
typedef unsigned int * puint_t;从现在开始,你可以用puint_t代替unsigned int *。
因此,第一个问题是您不能使用typedef为变量或字段命名。第二个问题是您想要一个由三位组成的整数类型。这是不支持C。但是,你可以读写你的v3bits.x字段-这实际上只使用了3位。也许使用一些宏,你可以得到与你想要的东西相似的东西。
https://stackoverflow.com/questions/41819856
复制相似问题