MDK开发,警惕printf


场景

MDK开发STM32程序,有一段运行正常的程序。

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

警惕

如果删除正常代码中的部分代码后,构建正常而运行不正常,查一查余下代码中有没有调用C库的函数