我想在联合中组合结构和字节数组。编译器是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))
之前添加;
。