首页 > 代码库 > 关于跨平台下end-of-line问题
关于跨平台下end-of-line问题
因为项目需要,同时开发了Linux/Windows版本的程序,后面在实际测试过程中,发现两个版本之间的体现出来的行为有些不一致,大致情况如下:
1、Linux下代码能编译通过,Windows下编译通过
2、Linux下程序功能正常,Linux程序功能不正确
#配置库使用svn,两个系统使用同一份代码
后面经过逐步定位,发现问题出现在中文注释上,再进一步发现时跨平台下end-of-line解释不同造成
实际上,在不同系统下,行尾符的解释不同:
如:Unix每行结尾为’\n‘,Windows系统每行结尾是“\r\n”, Mac系统每行结尾是‘\r‘
由上可知,Linux下的eol在Windows下会解释为回车+换行,而在Linux下只会是换行
为了解决此问题,svn 专门提供了一个 svn:eol-style 这个 property。只要将 svn:eol-style 设置为 native,每次 checkout,svn 会自动将 eol 转换为当前系统的默认格式
具体命令为:svn propset svn:eol-style native file/dir [-R 递归]
另外Linux下也提供了两个命令来解决这个问题:dos2unix + unix2dos,使用都很简单,具体可参考man描述
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。