我想在union中组合struct和byte数组。编译器是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;
答案 0 :(得分:3)
我认为你展示的内容很好,但你应该担心,如果你使用s_t
数组,因为最后可能有填充。
您可以告诉GCC使用扩展名__attribute__
语法“打包”结构。在最终__attribute__((packed))
之前添加;
。