为什么我必须打扰在每个文件的末尾放置换行符?
我偶尔会遇到软件 - 包括编译器 - 拒绝接受或正确处理没有正确使用换行符终止的文本文件。 我甚至遇到了形式的明确错误,
文件末尾没有换行符
......这似乎表明他们明确地检查了这个案件,然后拒绝它只是为了固执。
我在这里错过了什么吗? 为什么会 - 或者应该 - 什么都关心一个文件是否以一个看起来多余的空白结尾?
从历史上看,至少在Unix世界里,“换行”或者说U + 000A换行是一个行结束符。 这与Windows中的实践形成鲜明对比,例如,CR + LF是行分隔符。
读取文件中每一行的简单解决方案是将字符附加到缓冲区,直到遇到LF。 如果做得真的很愚蠢,这将忽略文件的最后一行,如果它没有被LF终止。
需要考虑的另一件事是允许包含文件的宏系统。 一条线如
%include "foo.inc"
可能会被上述文件的内容取代,如果最后一行没有以LF结尾,它将与下一行合并。 是的,我已经看到了这种行为与一个特定的宏汇编器的嵌入式平台。
现在我坚信:(a)这是一个古代的遗迹;(b)我还没有看到现代软件无法处理它,但我们仍然在Unix类系统上携带众多编辑人员帮助在文件末尾放置超过需要的字节。
通常我会说,在源文件末尾缺少换行符意味着编辑器或源代码控制客户端出现问题,并且缓冲区中的所有代码都不会被刷新。 虽然这很可能会导致其他错误,但知道编辑器/ SCM中可能会出错并且可能会丢失代码的知识是非常有用的。 当然,我想检查的东西。
链接地址: http://www.djcxy.com/p/77241.html上一篇: Why should I have to bother putting a linefeed at the end of every file?