你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HAL函数对Handle有效性的检查为什么不是用assert_param断言?

[复制链接]
zoomdy 提问时间:2017-1-24 12:48 /
阅读主题, 点击返回1楼
收藏 3 评论19 发布时间:2017-1-24 12:48
19个回答
toofree 回答时间:2017-2-8 11:42:41
根据二楼所说,及平时用Keil的应用。
对断言这么理解,assert_param(hspi != NULL) 只在调试仿真过程中才会有效;
而程序在编译成可执行代码后,这句相当于不存在了。而为了代码安装需要时时刻刻来判断输入参数是否有效,一旦输入参数无效,却被错误的执行了,那后果可能是灾难性的。
creep 回答时间:2017-2-8 11:47:18
之前分享的一个使用断言关于参数检查的帖子:

【STM32F303开发】+库函数参数检查
https://www.stmcu.org.cn/module/ ... &fromuid=394920
(出处: 意法半导体STM32/STM8技术社区)
cldym 回答时间:2017-2-8 11:59:35
支持二楼的解释。
zbber 回答时间:2017-2-8 13:25:36
淡定,淡定,淡定……
党国特派员 回答时间:2017-2-8 14:55:00
本帖最后由 党国特派员 于 2017-2-8 15:21 编辑

我来说个直白点的
断言一般是内部函数对参数的有效性进行检查。也就是说你的这些参数不是用户给的,能够保证参数的正确性。
如果你的函数是给用户使用的,那么就要使用IF ELSE对参数进行检查。因为用户很有可能给你传过来不是你要求的值。
至于3楼,没有说到断言的真正意图,会对大家造成一种误解,我实在不敢认同。


Dylan疾风闪电 回答时间:2017-2-8 15:25:34
赞2楼,支持观点
请叫我小张张 回答时间:2017-2-8 16:29:31
支持2楼解释
peter001 回答时间:2017-2-8 22:40:21
学习了
五哥1 回答时间:2017-2-9 03:07:52
二楼正解
庐山烟雨 回答时间:2017-2-10 15:22:38
断言宏可选择性编译,在编译为空时仍需要对传入参数进行规则检查。
12

所属标签

相似问题

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版