很偏僻的运行错误,编译成功,运行失败,原因:语句太长

来源:互联网 发布:淘宝真假混卖店铺 编辑:程序博客网 时间:2024/04/19 19:51

 

如下语句, 执行到这里会进入死循环。

 WRITE_REGISTER_ULONG(rNFMECCD0, (DWORD)((DWORD)(eccBuf[1]<<16) | (DWORD)(eccBuf[0]&0xff)));

换成如下语句就没问题:

 rNFMECCD0=(DWORD)((DWORD)(eccBuf[1]<<16) | (DWORD)(eccBuf[0]&0xff) );

 

其中宏如下:

#define WRITE_REGISTER_ULONG(p, v) (*(unsigned long *)(p)) = (v)

#define rNFMECCD0 (*(volatile unsigned *)0x4E000014)

原创粉丝点击