0
這是我今天的第二個數據對齊問題,但我認爲它不同於自己的問題。我正在使用一些遺留代碼,並且有幾件事情對我來說是新的:數據對齊結構的壓縮結構中的最後一個結構
我有一個包含4個結構和一些字節/字的打包結構。我需要最後一個結構,typedef'd BLOCK8_STRUCT(目前真的只有一個8位數組)是4字節對齊的;不關心其他結構。我從不直接引用我的代碼中的特定結構;我只能通過聲明結構體的結構來訪問它(希望是有道理的)。
下面是我想4字節對齊的結構的聲明:
typedef __packed struct
{
u8 data[1024];
} BLOCK8_STRUCT;
這裏是我的結構聲明結構:
typedef __packed struct
{
BLOCK1_STRUCT blk1;
#if NOV_BLK1_PADDING != 0
u8 blk1_pad[NOV_BLK1_PADDING];
#endif
u32 blk1_rev_and_sum;
BLOCK6_STRUCT blk6;
#if NOV_BLK6_PADDING != 0
u8 blk6_pad[NOV_BLK6_PADDING];
#endif
u32 blk6_rev_and_sum;
BLOCK7_STRUCT blk7;
u8 blk7_pad[NOV_BLK7_PADDING];
u32 blk7_rev_and_sum;
BLOCK8_STRUCT blk8;
u32 blk8_rev_and_sum;
} PARAM_BLOCK_IMAGE_STRUCT;
我想確保當我真正用來初始化一個結構體struct的實例BLOCK8_STRUCT是4字節對齊的。我知道如何對齊數據(IAR爲我提供了一個附註),但是我不清楚在哪裏我想要做這種對齊。當我嘗試在聲明結構體的聲明時嘗試執行此操作時,或者當我嘗試在BLOCK8_STRUCT聲明中執行此操作時,編譯器會發出警告。
只是爲了說明:這將對齊到該結構的每個成員的4個字節。這可能是好的,我將不得不考慮這種影響,但如果我只想要4字節對齊BLOCK8_STRUCT blk8,該怎麼辦? – nobby