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


奇怪,我的代码为什么还可以对断言的错误进行检查呢?????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
taizonglai
1楼-- · 2019-07-20 16:10
本帖最后由 zuozhongkai 于 2017-7-25 09:54 编辑

麻烦看清楚了,这个错误提示是什么???错误是undefined,提示你NVIC_PRIORITYGROUP_10未定义!!!!跟断言没任何关系!
taizonglai
2楼-- · 2019-07-20 19:18
 精彩回答 2  元偷偷看……
罗马的猫
3楼-- · 2019-07-20 20:11
帮顶a~!!
罗马的猫
4楼-- · 2019-07-20 22:34
 精彩回答 2  元偷偷看……
罗马的猫
5楼-- · 2019-07-21 00:05
 精彩回答 2  元偷偷看……
罗马的猫
6楼-- · 2019-07-21 05:05
本帖最后由 罗马的猫 于 2017-7-25 10:40 编辑
罗马的猫 发表于 2017-7-25 10:00
谢谢你啊!!

hello world 我C语言没学好

一周热门 更多>