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