....在给SD卡上FAT16文件系统.出现的让人崩溃的问题.... 函数如下: uint8 ReadBPB(void){ //读取BPB数据结构 uint8 ok; FAT_BPB * BPB; ok=ReadFatBlock(FAT_Sector); BPB=( FAT_BPB*)BUFFER; typedef struct{ uint8 BS_jmpBoot[3]; uint8 BS_OEMName[8]; uint16 BPB_BytesPerSec; uint8 BPB_SecPerClus; uint16 BPB_RsvdSecCnt; uint8 BPB_NumFATs; uint16 BPB_RootEntCnt; uint16 BPB_TotSec16; uint8 BPB_Media; uint16 BPB_FATSz16; uint16 BPB_SecPerTrk; uint16 BPB_NumHeads; uint32 BPB_HiddSec; uint32 BPB_TotSec32; uint8 BS_DrvNum; uint8 BS_Reservedl; uint8 BS_BootSig; uint32 BS_VolID; uint8 BS_VolLab[11]; uint8 BS_FilSysType[8]; uint8 ExecutableCode[448]; uint16 ExecutableMarker[2]; } FAT_BPB; 函数READ_BPB 读取的值都是对的.但是传给FAT_BPB BPB时.值就开始的 BS_jmpBoot[3];和BS_OEMName[8];是对的.后面基本上是乱的. 然后我试了几种方法。基本上判断,结构体在定义时是不连续分配的。 (与我平常见的其他编译器不一样) 请问那位知道在ADS编译器中可以设置定义结构体时,内存分配连续.. 或者有其他方法解决不?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 那位知道的高手一定告诉我啊。FAT16文件系统全都是结构体传值,这个解决不了,基本上做不下去了。. 提前感谢回答的大虾.也感谢路过的朋友. |