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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版