V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Akagi201
V2EX  ›  问与答

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

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

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

    https://gcc.gnu.org/ml/gcc/2003-11/msg01568.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5495 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:49 · PVG 14:49 · LAX 23:49 · JFK 02:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.