对断言这么理解,assert_param(hspi != NULL) 只在调试仿真过程中才会有效;
而程序在编译成可执行代码后,这句相当于不存在了。而为了代码安装需要时时刻刻来判断输入参数是否有效,一旦输入参数无效,却被错误的执行了,那后果可能是灾难性的。 之前分享的一个使用断言关于参数检查的帖子:
【STM32F303开发】+库函数参数检查
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=602378&fromuid=394920
(出处: 意法半导体STM32/STM8技术社区)
支持二楼的解释。 淡定,淡定,淡定……
本帖最后由 党国特派员 于 2017-2-8 15:21 编辑
我来说个直白点的
断言一般是内部函数对参数的有效性进行检查。也就是说你的这些参数不是用户给的,能够保证参数的正确性。
如果你的函数是给用户使用的,那么就要使用IF ELSE对参数进行检查。因为用户很有可能给你传过来不是你要求的值。至于3楼,没有说到断言的真正意图,会对大家造成一种误解,我实在不敢认同。
赞2楼,支持观点 支持2楼解释 学习了:lol 二楼正解 断言宏可选择性编译,在编译为空时仍需要对传入参数进行规则检查。
页:
1
[2]