请教C 的宏 定义

[复制链接]
2434|11
 楼主| itelectron 发表于 2010-9-20 09:45 | 显示全部楼层 |阅读模式
se, RAM, AI, rc, ip
assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
assert_param(expr) ((void)0)



  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
  void assert_failed(u8* file, u32 line);
#else
  #define assert_param(expr) ((void)0)
#endif /* DEBUG */
#endif /* __STM32F10x_CONF_H */







assert_param(expr) ((void)0)            请教这句话如何理解?
 楼主| itelectron 发表于 2010-9-20 09:48 | 显示全部楼层
IS_RCC_APB2_PERIPH(RCC_APB2Periph)  ==            (void)0   么?????
 楼主| itelectron 发表于 2010-9-20 09:50 | 显示全部楼层
#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFFF0002) == 0x00) && ((PERIPH) != 0x00))
 楼主| itelectron 发表于 2010-9-20 09:56 | 显示全部楼层
本帖最后由 itelectron 于 2010-9-20 10:00 编辑

#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFFF0002) == 0x00) && ((PERIPH) != 0x00))


这句  是不是 限定  2种  情况  等于0   或者 不等于  0
 楼主| itelectron 发表于 2010-9-20 10:02 | 显示全部楼层
assert_param(expr) ((void)0)


然后超出设置  范围  则 编译报  错  assert_param
 楼主| itelectron 发表于 2010-9-20 10:04 | 显示全部楼层
assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
assert_param(expr) ((void)0)
#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFFF0002) == 0x00) && ((PERIPH) != 0x00))

expr   ==  (void)0

expr ==   IS_RCC_APB2_PERIPH(RCC_APB2Periph)
 楼主| itelectron 发表于 2010-9-20 10:05 | 显示全部楼层
PERIPH  ==   (void)0
 楼主| itelectron 发表于 2010-9-20 10:12 | 显示全部楼层
assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));//模拟一个函数  ??
 楼主| itelectron 发表于 2010-9-20 10:15 | 显示全部楼层
#define assert_param(expr) ((void)0)              //  expr  =  (void)0
batsong 发表于 2010-9-20 12:00 | 显示全部楼层
#define assert_param(expr) ((void)0)  

这个什么意思,不管expr是多少,assert_param(expr) 都为0 ?

#define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))
expr是1整个宏是0
expr是0则写入failed日志,宏是1 ?
 楼主| itelectron 发表于 2010-9-20 12:39 | 显示全部楼层
:handshake 谢谢
qsgang 发表于 2010-9-20 19:34 | 显示全部楼层
受教了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2761

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部