场景
MDK开发STM32程序,有一段运行正常的程序。
- 程序中有一些冗余代码,删除后构建正常。硬件测试时问题来了,恢复冗余代码,程序正常。查看冗余代码,包含C库的一些底层函数(如
_sys_exit
),而在其他代码中调用了pirntf
,但不包含冗余代码构建却无错误无警告。
void _sys_exit(int x)
{
x = x;
}
- 相同的代码,重新建立工程,代码就不正常。检查工程配置,勾选
USE MicroLIB
代码运行就正常了。
警惕
如果删除正常代码中的部分代码后,构建正常而运行不正常,查一查余下代码中有没有调用C库的函数。