编程中:这个参数提示用的 assert_param());表示什么意思?

2019-07-20 20:55发布

//第一段:assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));

//第二段:
#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PriorityGroup_0) ||
                                       ((GROUP) == NVIC_PriorityGroup_1) ||
                                       ((GROUP) == NVIC_PriorityGroup_2) ||
                                       ((GROUP) == NVIC_PriorityGroup_3) ||
                                       ((GROUP) == NVIC_PriorityGroup_4))


感觉后面最终的第二段就是判断是不是相等,那么就是0和1。那最终的结果会是:assert_param(0或1);

那么assert_param(0)与assert_param(1),在最终替换成: #define assert_param(expr) ((void)0)
这样的话,#define assert_param(expr) ((void)0)究竟有啥意义?



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
aozima
1楼-- · 2019-07-21 00:17
 精彩回答 2  元偷偷看……
aozima
2楼-- · 2019-07-21 03:04
 精彩回答 2  元偷偷看……
yuanxinfei
3楼-- · 2019-07-21 07:58
aozima 发表于 2016-1-28 16:02
没意义

有意义的是当不定义成 ((void)0)时,可以打印出参数错误,提前通知程序员有代码写错了。

这个怎么打印出错误参数的
it_do_just
4楼-- · 2019-07-21 12:46
小温
5楼-- · 2019-07-21 13:52
检查传入参数的合法性,不合法就直接报错
慕名兰
6楼-- · 2019-07-21 14:58
楼主还在吗?我怎么知道是哪个GPIO

一周热门 更多>