什么时候程序源码文件末尾要有空行? 是怎么规定和考虑的?

2014-07-22 19:03:48 +08:00
 Akagi201
有的编辑器和工具会检查这个, 有时候会给出提示, 是否有相应的标准规定?
6966 次点击
所在节点    问与答
9 条回复
P233
2014-07-22 19:10:43 +08:00
Sublime Text 当光标处在最后一个字符时,有些高亮插件,以及 snippets 会判断错误。相信这跟楼主的问题无关,只是使用过程中的一点总结
tabris17
2014-07-22 19:32:33 +08:00
当编辑器指针移到代码文件末尾时,可以保证横向滚动条不偏移
Akagi201
2014-07-22 19:33:37 +08:00
@tabris17 哦, 原来是这样, 32个赞
msg7086
2014-07-22 19:51:02 +08:00
一行应该以换行符结尾。
em70
2014-07-22 20:55:53 +08:00
我有个教训,linux的crontable脚本,用windows下的编辑器里末尾不加空格的话,拷贝到服务器上,最后一行设置会乱码,然后导致设置的定时器不执行,翻遍了google都找不到原因.最后无意中发现末尾乱码导致的.但linux下vi编辑则不会出这个问题.
qq529633582
2014-07-22 21:01:05 +08:00
akfish
2014-07-22 21:09:34 +08:00
@qq529633582 +1,主要是历史遗留问题,照顾terminal的需要。
Terminal写脚本经常把输入输出pipe起来,文件空行结尾除了是给人看着舒服以外,不少程序还约定空行表示输入流结束,比如git内部实现就是多个子程序用stdio流串起来,空行结束。
dorentus
2014-07-23 09:02:37 +08:00
http://stackoverflow.com/questions/72271/no-newline-at-end-of-file-compiler-warning

一行应以换行符结尾,即使它是空行。
目前 C 依然保留着这规定,而 C++ 则给源码文件末尾的空行开了个特例。
dorentus
2014-07-23 09:38:04 +08:00
@dorentus
简言之是这样:
1) C 要求源文件必须是文本文件
2) UNIX 对文本文件的定义是由多行组成,每行需以换行符结尾

https://gcc.gnu.org/ml/gcc/2003-11/msg01568.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/123976

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX