STM32断言问题??

2019-07-20 10:24发布

我知道如果不取消下面的宏定义
/* #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


奇怪,我的代码为什么还可以对断言的错误进行检查呢?????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。