聊城网站建设项目,北京通信管理局网站备案处,兰州关键词优化排名,商务网站开发技术目录 前言背景介绍问题1问题1解决方法问题2问题2 解决方法总结 前言 
本文记录了在使用QtCreator开发时遇到的一个错误#xff0c;导致编译时出现大量的“未知标识符”#xff0c;经过一番努力最终解决了这个问题#xff0c;特在此记录。 
背景介绍 
Qt项目在麒麟V10 系统下… 目录 前言背景介绍问题1问题1解决方法问题2问题2 解决方法总结   前言 
本文记录了在使用QtCreator开发时遇到的一个错误导致编译时出现大量的“未知标识符”经过一番努力最终解决了这个问题特在此记录。 
背景介绍 
Qt项目在麒麟V10 系统下运行正常现需要在一台新的Wibdows系统PC机上安装开发环境在装完Qt开发环境后测试一切正常准备同步项目源代码。源码在自己搭建的GitLab服务器上所以我又安装了git最新的客户端https://git-scm.com/download/win和小乌龟git管理工具https://tortoisegit.org/download/。配置好git的账号信息后把代码clone到本地准备编译。 
问题1 
用QtCreator打开项目进行编译此时在问题对话框中出现大量的未知标识符错误。通过与其他windows系统下的项目文件比较发现是行尾不同报错的PC上代码文件的行尾是LF而其他正常的则是CRLF。 
问题1解决方法 通过对比发现是win系统下的文件行尾有问题这让我想起了在安装git时的一个配置项的选择就是上图所示的行尾配置引导页我选的是第三个 “Checkout as-iscommit as-is”。项目在麒麟V10系统下正常编译运行其文件行尾是LF该行尾在Windows下无法识别导致编译报错。于是果断卸载git并重新安装选择上图中第一个选项作为行尾配置。 把之前clone的代码删除后重新clone 后再次编译不再有大量未知标识符的报错。 
问题2 
虽然没有了大量未知标识符的错误但是还有几个错误提示是class 定义有问题多一个括号或少一个括号之类的问题经过对比发现是文件编码格式问题报错的文件编码为UTF-8 而正常的文件格式是UTF-8 BOM。 
问题2 解决方法 
首先了解下UTF-8与UTF-8 BOM的区别 UTF-8是一种通用的Unicode字符编码方式使用可变长度的编码来表示Unicode字符。它可以表示几乎所有的Unicode字符包括ASCII字符和非ASCII字符。UTF-8编码中的每个字符使用1到4个字节表示具体字节长度取决于字符的Unicode码位。 UTF-8 BOM是一个特殊的字节序列即字节顺序标记Byte Order Mark用于标识文本文件的字节顺序。它是由3个字节构成的特殊字符序列0xEF, 0xBB, 0xBF在文件开头作为文件头部的标记。BOM最初设计用于解决字节顺序的问题主要在一些特定的编码方案中使用如UTF-16和UTF-32。然而在UTF-8中BOM不是必需的也不推荐使用。 UTF-8编码的文件通常不包含BOM。没有BOM的UTF-8文件被视为以UTF-8编码存储的纯文本文件。当打开这样的文件时应用程序会默认使用UTF-8编码来解释其内容。 相比之下带有BOM的UTF-8文件在文件开头包含BOM标记。当处理这样的文件时应用程序可以通过检查BOM来确定文件的编码方式。BOM的存在可以帮助应用程序自动识别文件的编码。但是某些应用程序可能对BOM敏感可能会解释BOM字符本身导致显示问题。 知道了UTF-8与UTF-8 BOM的区别才明白是代码中含有中文字符导致编译失败的解决这个问题只能是将代码中含有中文字符的文件格式转为UTF-8 BOM 。这一点可以通过修改QtCreator的配置实现如下图所示。按下图配置后在源码中随便敲几个空格然后保存文件格式就变为UTF-8 BOM了。  
重新加载文件后再次编译就一切正常了。下图是保存文件后按照新编码格式加载文件的示例  
总结 
以上就是本文的所有内容了如有疑问欢迎留言讨论