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、最後にパディングがある可能性があるため、配列を使用する場合は心配する必要があります。

__attribute__拡張構文を使用して、GCC に構造体を「パック」するように指示できます。__attribute__((packed))最後の の前に追加し;ます。

于 2013-05-21T12:59:20.937 に答える