我知道如果不取消下面的宏定义
/* #define USE_FULL_ASSERT 1 */
#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 */
编译的就是#define assert_param(expr) ((void)0)
也就是说不进行断言错误检查
正点原子的代码sys.c里面
#ifdef USE_FULL_ASSERT
//当编译提示出错的时候此函数用来报告错误的文件和所在行
//file:指向源文件
//line:指向在文件中的行数
void assert_failed(uint8_t* file, uint32_t line)
{
while (1)
{
}
}
#endif
也不会进行断言错误检查
可是为什么我的代码有断言检查呢!!我没有定义USE_FULL_ASSERT
我再所有的文件中搜索,也没有定义USE_FULL_ASSERT
在c++选项卡也没有定义USE_FULL_ASSERT
奇怪,我的代码为什么还可以对断言的错误进行检查呢?????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>