assert_param,assertparam

http://www.itjxue.com  2023-01-15 21:37  来源:未知  点击次数: 

MDK中使用MDK自带的ST固件函数,assert_param()在哪里定义的??

在stm32f10x_conf.h中定义

源码如下

#ifdef USE_FULL_ASSERT

/**

* @brief The assert_param macro is used for function's parameters check.

* @param expr: If expr is false, it calls assert_failed function

* which reports the name of the source file and the source

* line number of the call that failed.

* If expr is true, it returns no value.

* @retval None

*/

#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))

/* Exported functions ------------------------------------------------------- */

void assert_failed(uint8_t* file, uint32_t line);

#else

#define assert_param(expr) ((void)0)

#endif /* USE_FULL_ASSERT */

STM32库函数中,assert_param断言时,__FILE和__LINE,是怎样确定主调处

断言是个宏,在stm32f10x_conf.h定义的。编译的时候编译器会把__FILE__替换成断言所在的函数的文件名,把__LINE__替换成所在的行号,所以程序运行的时候脱离编译器也可以显示的

assert_param(IS_GPIO_ALL_PERIPH(GPIOx));谁知道这句话的具体意思啊?请指点

我也是刚才才看到参考。有分没有啊,我提问没分提不了提交回答

assert_param什么意思

assert_param是一个宏定义;

在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。

所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,

则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。

(责任编辑:IT教学网)

更多

相关excel文章

推荐excel文章