如何在结构中键入dede 3位变量?

时间:2017-01-24 04:09:03

标签: c struct typedef

我想在结构中输入一个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;
}

我怎么能这样做?

3 个答案:

答案 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位。也许使用一些宏可以获得类似于你想要的东西。