1
N.B:這與Effects of __attribute__((packed)) on nested array of structures?嵌套結構數組的大小是如何決定的?
類似但不完全相同我正在定義一個包含多個嵌套結構的結構類型。 其中一個成員是一堆包裝結構,這讓我對它應該嵌套的順序有些困惑,相對於先有較大成員的規範。
如果該成員是一個長度爲4的8個字節的結構數組,則該成員總數爲32個字節,被視爲用於打包和對齊的單一實體,從而使另一個單個結構成員18字節,實際上更小?
e.g
typedef struct __attribute__((__packed__)) settingsProfile {
/* For packing and alignment, is this member 32 bytes or 4 'chunks'(?) of 8 bytes?*/
struct __attribute__((__packed__)) load {
int32_t slewRate;
int32_t current;
} load[4];
/* 18 bytes, so if the above *isn't* 32 it should be below this */
struct __attribute__((__packed__)) ac {
int32_t slewRate;
int32_t voltage;
int32_t iLimit;
int32_t ovp;
bool dcMode;
};
struct __attribute__((__packed__)) xfmr { // 4 bytes
int32_t ocp;
} xfmr;
uint16_t extOtp[2]; // 4 bytes
} settingsProfile_t;
謝謝!
請記住,在您使用的類型中,數字是位數。所以對於'int32_t',它是一個32位整數,32位是4個字節。這意味着兩個'int32_t'成員的結構將是8個字節,並且在這些結構的四個數組中,您有8 * 4(32)個字節。這意味着你所有的手動尺寸計算都是錯誤的。 –
哦拍!我在實際的代碼中使用WORDS語言,在寫這裏的時候忘了加倍大小,現在更新ta。 – Toby