解决 Keil MDK 中 #1-D 警告: warning: #1-D: last line of file ends without a newline文件末尾无换行的屏蔽方法
·
在 STM32 开发中,我们经常会遇到 Keil MDK 编译器抛出的 #1-D: last line of file ends without a newline 警告(如图)。这个警告本身不影响程序运行,但会让编译输出变得杂乱,影响我们快速定位真正的错误。本文将分享几种解决方法,帮助你彻底告别这个烦人的警告。

一.警告产生的原因
这个警告的本质是C 语言文件格式规范要求:源文件 / 头文件的最后一行必须以换行符(\n)结束,如果你的 .h 或 .c 文件最后一行代码后没有空行,Keil 就会报出这个警告,例如:

二:解决办法
1.不屏蔽警告,手动Enter空行
逐个点击警告跳至对应文件,把光标移到最后一行代码的末尾按一下回车键(Enter)保存,重新编后警告直接消失。
2.单.h文件屏蔽警告
在想屏蔽的.h文件最顶部加一行:#pragma diag_suppress 1,此时包含这个.h文件的.c/.h文件都不会再出现这个警告。仅对当前文件生效,不会影响工程中其他文件的警告检查,适合精细化控制
3.全局屏蔽警告
打开工程后点击工具栏 “魔法棒” 图标(Options for Target),切换至C/C++选项卡,在Misc Controls输入框的原有参数后追加--diag_suppress=1(用空格分隔,如--locale=english -no-multibyte-chars --diag_suppress=1),点击OK保存设置并重新编译,即可让工程中所有文件的该类警告被彻底屏蔽。

4.效果
无论哪种方法,最终都可以消除这个警告,如下:

三.写在后面
本博客仅记录自己的学习进程,无任何商业用途,基于论坛上已经存在的内容结合自己实操过程完成了此博客,自己也做了一些细节验证,在此记录下来作为学习沉淀。
更多推荐



所有评论(0)