我想在联合中组合结构和字节数组。编译器是gcc。
以下是32位嵌入式控制器(AVR)的良好/保存代码吗?
我需要担心字节的对齐吗?

#include <stdint.h>

typedef int8_t S8;

typedef union {
    struct {
        S8 a;
        S8 b;
        S8 c;
        S8 d;
        S8 e;
    };
    S8 array[5];
} s_t;

初始化:
s_t s = {.array = {0, 0, 0, 0, 0}};

访问:
s.a = 50;
s.c = 42;

最佳答案

我认为你展示的内容很好,但如果你使用s_t数组,你应该担心,因为结尾可能有填充。
您可以告诉GCC使用扩展__attribute__语法“打包”结构。在最后的__attribute__((packed))之前添加;

09-06 14:32