下载github上的qt工程,拿回来一编译出现了N多错误,但是工程明明是正确的,没有什么特殊的配置设置,但是就是几乎所有的代码都在报错。
类似与:error: C2059: 语法错误:“namespace”
想了一下,应该不是代码内容的问题,那就只能出在格式上,首先查看代码的编码格式,是UTF-8没错,不是编码问题。这就奇怪了,查看系统设置里面,发现除了编码格式,还有换行符的设置。
查看了一下,果然下载的内容默认设置的是UNIX的LF格式,全部改成CRLF后,编译正常。
总结一下网上说的该类问题的原因主要分为三种:
- 文件编码格式,要于qt中设置一致;
- 换行符格式,要于qt中设置一致;
- 文件循环引用的问题,记得要设置宏
Qt项目,编译打包下载的代码,一直出现本没有语法错误的error,后来发现,其实对应的.cpp/.h文件格式为UNIX(LF),Qt windows 默认为CRLF,更改完之后,报错消失,编译正常。
远端托管代码打包下载到本地,编译容易出现一些本没有语法错误的error,那么就注意下,下载的文件格式是否和编译环境的一致;
1、LF和CRLF是什么?
CRLF 是 carriage return line feed 的缩写,中文意思是回车换行。
LF 是 line feed 的缩写,中文意思也是换行。
它们都是文本换行的方式。
2、LF和CRLF区别
CRLF: “\r\n”, windows系统环境下的换行方式
LF: “\n”, Linux系统环境下的换行方式
批量转换 LF 和 CRLF 的小技巧
在做跨平台开发移植的时候,最常见的问题就是不同操作系统的换行不同(例如,Windows 上是 CRLF,而 Linux 上是 LF,MacOS 以前是 CR,现在也是 LF),如果不注意的话,可能会导致编译的时候报诡异的错误,虽然说有些优秀的文本工具(notepad++, vscode 等)可以自动转换,但是它们都没有提供批量转换的方法,所以一旦遇到有成百上千个的文件需要转换,那么一个个手动去转明显效率低下。虽然网上提到批量转换的文章很多,但是感觉都没有介绍清楚,
通过 EditPlus 批量转换
操作很简单,进入相应的目录下,然后打开全部文件,如图操作即可