首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在结构中定义3位变量?

如何在结构中定义3位变量?
EN

Stack Overflow用户
提问于 2017-01-24 12:09:03
回答 3查看 415关注 0票数 0

我想要在一个结构中定义一个3位的变量,我想像int x=5;那样使用它,而不是structName.x=5;,这就是我想说的例子:

代码语言:javascript
运行
复制
typedef struct{
    unsigned x:3;
} v3bits;

typedef v3bits.x uint3_t;

int main(){
    uint3_t x=5; 
    return 0;
}

我怎么能这么做呢?

EN

回答 3

Stack Overflow用户

发布于 2017-01-24 12:12:56

你不能。没有办法在C中创建一个3位的整数类型。你可以使用一个更宽的整数类型,比如uint8_t。

票数 3
EN

Stack Overflow用户

发布于 2017-01-24 14:21:44

不,至少在C中是不可能的。使用更宽类型的数据类型

票数 1
EN

Stack Overflow用户

发布于 2017-01-24 14:54:13

声明一个带有字段的结构:

类型定义结构{ ...unsigned x:3;} v3bits;

...and为它分配一个“别名”,v3bits,它引用一个(否则)未命名的类型"struct something“。这是可以的。然后,尝试使用字段而不是类型来创建新类型:

类型定义f v3bits.x uint3_t;(v3bits.x不是类型)

Typedef用于从其他类型名称创建新的类型名称-结果是只有一个短名称,而不是由(可能)几个部分组成的长名称。例如:

代码语言:javascript
运行
复制
typedef unsigned int * puint_t;

从现在开始,你可以用puint_t代替unsigned int *

因此,第一个问题是您不能使用typedef为变量或字段命名。第二个问题是您想要一个由三位组成的整数类型。这是不支持C。但是,你可以读写你的v3bits.x字段-这实际上只使用了3位。也许使用一些宏,你可以得到与你想要的东西相似的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41819856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档