我可以使用 union 来表达结构体和多个打包成员吗?

标签 c data-structures struct unions

假设我有一个结构,ivec2:

typedef struct ivec2 {
    int x, y;
} ivec2;

我想知道是否可以建立类似于以下内容的 union :

union rectangle {
    ivec2 size; // 8 bytes; members: int x, y;
    int width, height; // 4 + 4 bytes
};

其中宽度对应于size.x高度对应于size.y

我发现可以做到这一点:

union rectangle {
    ivec2 size; // 8 bytes
    int arr[2]; // 4 + 4 bytes
};

但我可以与单独的成员一起做吗?

这张图片显示了我的意思:

Diagram of union

最佳答案

您想要做的是在 union 内嵌套一个匿名结构。

而不是:

union rectangle {
    ivec2 size;
    int width, height;
};

做:

union rectangle {
    ivec2 size;
    struct {
        int width;
        int height;
    };
};

关于我可以使用 union 来表达结构体和多个打包成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57415900/

相关文章:

c - 知道为什么我的 C 代码无法从/proc 读取吗?

java - Java 中支持多个键的任何数据结构 - 不完全映射

java - 如何修复 "this method must return boolean type"错误

数组中的 C++ 结构,帮助!

c - 如何将二进制文件中的结构写入另一个二进制文件中的嵌套结构?

c++ - 访问结构 vector

c - 为什么 fopen 参数限制在 C 标准和 <stdio.h> 头文件中限定?

python - Numpy 比纯 C 更快?

无法在 C 中释放重新分配的内存

c++ - 在已排序的双向链表中插入节点