我正在处理一个棘手的警告,但我似乎无法弄清楚它的真相。事情是这样的:
我创建了一个头文件来定义我的一个传感器设备的寄存器地址。我的程序工作得很好,但是,在编译项目时,我收到警告“device\device_reg.h(44): warning: #1-D: last line of file Ends without a newline”
但是,当我转到该文件时,它似乎确实以新行结束。我记得有些文本编辑器有时无法正确处理输入换行符。因此,我删除了换行符,在新行末尾按回车键,然后重新编译。警告仍然存在。我用notepad++和windows中的原始记事本重复了这个过程。相同的结果...
我目前正在 Keil 5.1.0.0 中使用 Arm 编译器版本 5.03.0.76 编译 c++ 代码
任何帮助将不胜感激。
谢谢你, 美女
我对包含的文件也有类似的问题。原来最后一行是缩进的。因此,当我按下回车键时,下一行会缩进,在新行上留下空格。我按回车键将最后一行返回到 0 位置,警告消失了。
所以,这不是我想要的解决方案。不过,我解决了这个问题。我将寄存器映射定义与类头文件结合起来。我仍然不知道为什么我早些时候遇到这个问题,如果有人有任何见解那就太好了。不过,目前这个问题已经解决了。
谢谢你。
在C语言中,文件是流式的,可以任意拼接,并且拼接后仍然是完整的。为了确保这一点,在 Unix 中 符号被定义为“行尾”,换句话说,如果一行没有 最后它被认为没有完成,换句话说该文件是不完整的,即它根本不是一个合法的文本文件。如果 是两行之间的分隔符,然后最后一行没有 导致拼接两个文件时,后者的第一行被拼接到前者的最后一行,很可能会导致语义错误。因此编译器会报告有关该问题的警告。