0

私はこの構造体を持っていますが、メモリ内で 4 バイトごとに使用されていないことを知っているので、構造体をメモリ内で正しく配置する必要があります。これを行う方法が正確にはわかりませんが、そうする必要があることはわかっていますし、どこで行う必要があるかも知っています。

typedef struct _vol_meta { 
        uint16_t crc;        // 2 bytes  
        uint8_t ver_major;   // 1 byte
        char pad1;           // need to align here - 1 byte

        uint16_t size;       // 2 bytes
        uint8_t ver_minor;   // 1 byte
        char pad2;           // need to align here  - 1 byte

        uint8_t pagenum;     // 1 byte
        uint8_t rownum;      // 1 byte
        char pad3[2];        // align here - 2 bytes

        uint8_t name[15];    // 15 bytes
        // not sure how I'm supposed to align the array of uint8_t vars?
} VOL_META;

のようなある種のcデータ型はありますか

align 2

それはコンパイラに次の 2 バイトか何かをスキップするように指示しますか? ここでちょっと迷った。

4

1 に答える 1

1

次のように、(驚き) 'aligned' 属性を使用できます。

__ attribute __ ((aligned (2)) //単語の配置

xc16 ユーザー ガイド セクション 8.12 はあなたの友達です。

于 2015-11-25T22:08:48.383 に答える