定义结构
typedef struct
{ //字节位置
uchar BootFlag; // 0
uchar StartCHS[3]; // 1 2 3
uchar SystemID; // 4
uchar EndCHS[3]; // 5 6 7
ulong RelativeSectors; // 8 9 A B
ulong TotalSectors; // C D E F
}PartTab_t;
当我访问tPartTab.RelativeSectorsr的时候,按照小端CPU的数据应该是字节BA98位置中的数据,可我在跟踪的时候引用数据的顺序却是7698
tPartTab.TotalSectors的字节顺序和位置也是错的
前面四个成员访问都是对的
请高人指点!
测试代码:
void fun (PartTab_t *tPartTab)
{
uchar ucj;
uchar *ucpTemp = (uchar*)tPartTab;
for (ucj = 0; ucj < 16; ucj++) ucpTemp [ucj] = ucj;
for (uci = 0; uci < 4; uci++)
{
printf (" 启动标志:%02X\n", tPartTab [uci].BootFlag);
printf (" 分区类型:%02X\n", tPartTab [uci].SystemID);
printf (" 相对扇区:%lu\n", tPartTab [uci].RelativeSectors);
printf (" 总扇区数:%lu\n", tPartTab [uci].TotalSectors);
}
}
会不会是编译器自动给你按四个字节对齐了,你考律一下对齐看看...
出错的成员变量在第8个字节上
我考虑过字节对齐的问题,但没有头绪