字节数组与结构(字节对齐)联合

时间:2013-05-21 12:54:57

标签: c struct unions memory-alignment avr-gcc

我想在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;

1 个答案:

答案 0 :(得分:3)

我认为你展示的内容很好,但你应该担心,如果你使用s_t数组,因为最后可能有填充。

您可以告诉GCC使用扩展名__attribute__语法“打包”结构。在最终__attribute__((packed))之前添加;