【问题标题】:How to typedef 3 bits variable that's inside of a struct?如何键入结构内的 3 位变量?
【发布时间】:2017-01-24 04:09:03
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: c struct typedef


    【解决方案1】:

    你不能。无法在 C 中创建 3 位整数类型。您可以改用更宽的整数类型,例如 uint8_t。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你声明一个结构体,里面有一个字段:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多