当前位置: 代码迷 >> 单片机 >> ARM中关于字段操作宏定义的有关问题
  详细解决方案

ARM中关于字段操作宏定义的有关问题

热度:65   发布时间:2016-04-28 15:26:50.0
ARM中关于字段操作宏定义的问题
在编程stm32f10x时候运用到字段操作
#define BITBAND(addr,bitnum) ((addr&0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr)  *((volatile unsigned long *)(addr))
#define BIT_ADDR(addr,bitnum)  MEM_ADDR(BITBAND(addr,bitnum))

在编程时候发现,不加宏定义中括号(红色标记)时候确编程错误,而加了宏定义中的括号确能得到结果
请问宏定义中加括号和不加括号有什么区别?

------解决方案--------------------
涉及到运算符优先级的问题,加与不加括号,运算有天壤之别。
但是个人觉得报警告是必须的,至于报错误这个与编译器有关。
  相关解决方案