打印
[应用相关]

高效使用 union 的策略

[复制链接]
575|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
米多0036|  楼主 | 2024-6-12 08:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高效使用 union 的策略
共享内存的成员:
如果你的程序在某个时间点只需要使用一种数据类型,可以用 union 来减少内存消耗。例如,一个通信协议的数据包可能在不同的时间只存储一种类型的数据。
c
复制代码
typedef union {
    uint8_t raw[32];
    struct {
        uint16_t header;
        uint8_t payload[28];
        uint16_t checksum;
    } structuredData;
} Packet;
位域与 union 结合:
位域可以与 union 结合使用,以便在单个位或位段层面上优化内存使用。这在处理标志或多个状态位时特别有用。
c
复制代码
typedef union {
    struct {
        uint16_t flag1 : 1;
        uint16_t flag2 : 1;
        uint16_t flag3 : 1;
        uint16_t reserved : 13;
    } bits;
    uint16_t allFlags;
} Flags;
不同数据视图:
使用 union 来表示同一数据的不同视图。例如,将数据包视为字节数组或特定格式的数据结构。
c
复制代码
typedef union {
    struct {
        uint16_t x;
        uint16_t y;
    } coordinates;
    uint32_t point;
} PointUnion;

使用特权

评论回复
沙发
rzjvv| | 2024-8-31 17:40 | 只看该作者
当你的程序在某个时间点只需要使用一种数据类型时,union 可以显著减少内存消耗。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

128

主题

1392

帖子

0

粉丝