结构体对齐

struct BPB16 {
u16 BPB_BytsPerSec; //每扇区字节数
u8 BPB_SecPerClus; //每簇扇区数
u16 BPB_RsvdSecCnt; //DBR保留的扇区数
u8 BPB_NumFATs; //FAT表个数
u16 BPB_Unused1; //FDT容量(FAT32未用)
u16 BPB_Unused2; //小于32MB分区的扇区数(FAT32未用)
u8 BPB_Media; //介质描述符
u16 BPB_Unused3; //FAT16中表示FAT扇区数(FAT32未用)
u16 BPB_SecPerTrk; //每磁道扇区数
u16 BPB_NumHeads; //磁头数
u32 BPB_HiddSec; //隐藏扇区数
u32 BPB_TotSec; //扇区总数
u8 BPB_NumberBIOS; //BIOS驱动器号
u8 BPB_Unused4;
u8 BPB_ExFlag; //扩展引用标记
u32 BPB_VOLSER; //卷序列号
char BPB_Unused8[11];
u64 BPB_Type; //文件系统类型
};

如上个结构体所示,系统为了节省空间,会默认打乱结构体中成员的顺序,而有时我们需要结构体中的成员按照顺序来排列,这时需要在结构体之前加上#pragma pack (1),表示按1字节对齐,具体#pragma pack (n)的用法这里不再详细解释。

猜你喜欢

转载自blog.csdn.net/weixin_42894596/article/details/81485037