完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以HAL_SPI_Init为例,hspi参数的检查并没有使用assert_param断言宏,如果是我实现的话,我会用assert_param(hspi != NULL)实现。一般来讲,入参错误通常是bug,本着早死早超生的原则,用断言宏把它摁死更干脆。使用返回值的话,如果调用方没有检查返回值的话,会转移事故现场,增加排错的难度。不知道HAL中使用返回错误值的方式检测Handle参数有没有什么用意?或者说有什么好处? |
|
相关推荐
1个回答
|
|
在HAL_SPI_Init函数中,对Handle有效性的检查使用的是if语句,而不是assert_param断言。这是因为在这种情况下,使用if语句更合适。以下是原因:
1. 错误处理:当hspi为NULL时,函数返回HAL_ERROR,这是一个明确的错误处理方式。如果使用assert_param断言,当条件不满足时,程序将调用assert_failed函数,这可能导致程序崩溃或者进入无限循环,而不是返回一个错误状态。 2. 可读性:使用if语句可以提高代码的可读性。当阅读代码时,开发者可以清楚地看到Handle有效性的检查,而不需要查看assert_param的定义和行为。 3. 灵活性:if语句提供了更多的灵活性,可以根据需要添加更多的错误处理逻辑。而assert_param断言通常用于检查参数的有效性,一旦条件不满足,程序将立即终止。 4. 编译选项:assert_param断言可以在编译时通过定义NDEBUG宏来禁用。这意味着在某些情况下,assert_param断言可能不会执行,从而降低了代码的健壮性。而if语句不会受到这种影响。 综上所述,使用if语句对Handle有效性进行检查是更合适的选择。当然,assert_param断言在检查参数有效性方面仍然非常有用,例如在HAL_SPI_Init函数中检查SPI模式、方向等参数。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1784 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1088 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
729 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
734浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
559浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 21:45 , Processed in 0.882912 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号