1

我想在一个联合中组合一个结构和一个字节数组。编译器是 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;
4

1 回答 1

3

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

您可以告诉 GCC 使用扩展__attribute__语法“打包”结构。__attribute__((packed))在最后的;.

于 2013-05-21T12:59:20.937 回答