打印

编译器怎么会把BUFFER[11]给漏掉了呢?

[复制链接]
537|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yinxiangh|  楼主 | 2015-3-27 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在IAR环境中:
#define  uint8    unsigned char
#define  uint16   unsigned int
#define  uint32   unsigned long int

unsigned char BUFFER[512]; //存放数据

typedef struct  //这里一共是512个字节
{
        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];
        uint8 ExecutableMarker[2];
} FAT_BPB;


FAT_BPB* BPB;

当我读出了512字节存放到BUFFER中后  BPB = (FAT_BPB*)BUFFER; 查看BPB中的数据发现        
uint8 BS_jmpBoot[3];
uint8 BS_OEMName[8]; 这11个数据正常,
BUFFER[11]=0x00;
BUFFER[12]=0x02;
BUFFER[13]=0x40;
转换过去     BPB_BytesPerSec=0x4002 我感觉应该是0x0200才对啊,编译器怎么会把BUFFER[11]给漏掉了呢?请教了 谢谢

相关帖子

沙发
juventus9554| | 2015-3-27 22:39 | 只看该作者
不会吧。。。

使用特权

评论回复
板凳
dirtwillfly| | 2015-3-29 21:03 | 只看该作者
是不是被编译器给优化掉了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝