我想在结构中输入一个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;
}
我怎么能这样做?
答案 0 :(得分:3)
你不能。无法在C中创建3位整数类型。您可以使用更宽的整数类型,如uint8_t。
答案 1 :(得分:1)
不,至少在C中是不可能的。使用更宽类型的数据类型
答案 2 :(得分:0)
您声明一个带有字段的结构:
typedef struct {... unsigned x:3; } v3bits;
...并为其分配一个"别名",v3bits,它指的是(否则)未命名的类型" struct something"。这没关系。然后尝试使用字段而不是类型创建新类型:
typedef v3bits.x uint3_t; (v3bits.x不是类型)
Typedef
用于从其他类型创建新的类型名称 - 结果只有一个简短的名称,而不是由(可能)几个部分组成的长名称。例如:
typedef unsigned int * puint_t;
从现在开始,允许您编写puint_t
而不是unsigned int *
。
因此,第一个问题是您无法使用typedef为变量或字段命名。第二个问题是你想要一个由三位组成的整数类型。 C不支持这种情况。但是,您可以读取和写入v3bits.x字段 - 这实际上只使用3位。也许使用一些宏可以获得类似于你想要的东西。