QtCreator报大量未知标识符错误的解决方法

目录

      • 前言
      • 背景介绍
      • 问题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-is,commit 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了。
在这里插入图片描述

重新加载文件后,再次编译就一切正常了。下图是保存文件后按照新编码格式加载文件的示例:
在这里插入图片描述

总结

以上就是本文的所有内容了,如有疑问欢迎留言讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DTEmpower案例操作教程】向导式建模

DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件,致力于帮助工程师及工科专业学生,利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析,建立高质量的数据模型,实现快速设计评估、实时仿真预测、系统参数预警、设…

手机上记录的备忘录内容怎么分享到电脑上查看?

手机已经成为了我们生活中不可或缺的一部分,我们用它来处理琐碎事务,记录生活点滴,手机备忘录就是我们常用的工具之一。但随着工作的需要,我们往往会遇到一个问题:手机上记录的备忘录内容,如何方便地分享到…

微信小游戏从零到上线系列文章整理,建议收藏

引言 本系列是《从零开始开发贪吃蛇小游戏到上线系列》,欢迎大家关注分享收藏订阅。 大家中秋快乐,我是亿元程序员,一位有着8年游戏行业经验的主程。前面笔者给大家讲解了微信小游戏如何从零到上线的流程。可能很多小伙伴都还没有看到。 本…

某高校的毕设

最近通过某个平台接的单子,最后Kali做的测试没有公开可以私聊给教程。 下面是规划与配置 1.vlan方面:推荐一个vlan下的所有主机为一个子网网段 连接电脑和http客户端的接口配置为access接口 交换机与交换机或路由器连接的接口配置为trunk接口---也可以…

阿里云网络、数据中心和服务器技术创新优势说明

阿里云服务器技术创新、网络技术创新、数据中心技术创新和智能运维:云服务器方升架构、自研硬件、自研存储硬件AliFlash和异构计算加速平台,以及全自研网络系统技术创新和数据中心巴拿马电源、液冷技术等技术创新说明,阿里云百科aliyunbaike.…

conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题

上一篇博客《conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败》解决了conan 1.60.0交叉编译boost/1.80.1的问题后,我继续交叉编译openssl/3.1.2时又报错了 conan install openssl/3.1.2 -pr:h aarch64-linux-gnu.…

Linux--进程间通信之命名管道

目录 前言概念命名管道的创建命名管道特性 命名管道通信建立连接资源处理 Client && Server通信总结 前言 上一篇文章介绍匿名管道的进程间通信只适合在具有血缘关系的进程间进行通信,但是如果我们想让两个不相关的进程实现通信,使用匿名管道显…

某企查ymg_ssr列表详情

js篇— 今天来看下某企查的列表详情–侵删 header发现这个参数 先断点一下 然后上一步 就到了这个地方 就开始扣一下这个js 三大段,先不解混淆了, 给a粘贴出来 ,去掉自执行 给结果稍微改一下 缺windows,开始补环境 直接上…

Linux常见指令(1)

Linux常见指令[1] 一.前言1.操作系统简述 二.Linux常见指令1.登录Xshell2.Linux下的常见命令1.pwd2.ls1.ls -a2.ls -d3.ls -l 3.cd Linux中的文件系统1.文件的相关知识2.Linux下目录结构的认识1.什么叫做路径?2.Linux的整体目录结构3.为什么要有路径呢?4.绝对路径与相对路径 …

常识判断 --- 科技常识

目录 力与热 光和声 航空成就 垃圾分类 百科知识 血型 二十四节气歌 春雨惊春清谷天 夏满忙夏暑相连 秋处露秋寒霜降 冬雪雪冬小大寒 力与热 光和声 航空成就 垃圾分类 百科知识 血型

ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板

ThemeForest 上的 HTML 网站模板受到全球数百万客户的喜爱。与包含网站所有页面并允许您在 WP 仪表板中自定义字体和样式的 WordPress 主题不同,这些设计模板是用 HTML 构建的。您可以在 HTML 编辑器中编辑模板,但不能在 WordPress 上编辑模板&#xff0…

35 LRU缓存

LRU缓存 题解1 双map(差2个testcases)题解2 哈希表双向链表(参考)题解3 STL:listunordered_map 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正…

SpringMVC+统一表现层返回值+异常处理器

一、统一表现层返回值 根据我们不同的处理方法,返回的数据格式都会不同,例如添加只返回true|false,删除同理,而查询却返回数据。 Result类 为此我们封装一个result类来用于表现层的返回。 public class Result {//描述统一格式…

publicPath:打包时的配置

vue项目,执行打包命令后,会在项目的根目录中自动创建一个文件夹dist,dist中的文件就是打包后的文件,只需要放到服务器中即可。 【默认情况下,用的绝对路径,需要放到服务器的根目录打开。】 如果希望放到子目录也能运行…

背靠背 HVDC-MMC模块化多电平转换器输电系统-用于无源网络系统的电能质量调节MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) MATLAB2021版本 模型简介: MMC-HVDC模拟背靠背HVDC模块化多电平换流器(MMC)作为为整个电网供电的电能质量调节系统。因此,模块化多电平逆变器作为远程端转换器…

八、3d场景的区域光墙

在遇到区域展示的时候我们就能看到炫酷的区域选中效果,那么代码是怎么编辑的呢,今天咱们就好好说说,下面看实现效果。 思路: 首先,光墙肯定有多个,那么必须要创建一个新的js文件来作为他的原型对象。这个光…

SolidWorks 入门笔记03:生成工程图和一键标注

默认情况下,SOLIDWORKS系统在工程图和零件或装配体三维模型之间提供全相关的功能,全相关意味着无论什么时候修改零件或装配体的三维模型,所有相关的工程视图将自动更新,以反映零件或装配体的形状和尺寸变化;反之&#…

NOSQL Redis 数据持久化

Redis 数据持久化 快照方式(RDB,Redis DataBase) 全量的 在指定的时间间隔能对你的数据进行快照存储。文件追加方式(AOF,Append only File)增量 记录每次对服务器写的操作,当服务器重启的时候会重新执行这…

时间管理器:高效管理你的时间

随着社会的发展和生活节奏的加快,时间管理成为了人们日常生活中不可或缺的一部分。每个人都希望能够高效利用时间,提高工作和生活的效率。然而,在忙碌的生活中,很多人常常感到无所适从、无法合理规划自己的时间。这时,…

毕业设计选题之Java+springboot线上蔬菜销售与配送系统(源码+调试+开题+lw)

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…