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

news2024/10/3 3:25:47

目录

      • 前言
      • 背景介绍
      • 问题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.coloradmin.cn/o/1033507.html

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

相关文章

Linux中创建用户要自己设置密码

因为不知道Linux默认设置的密码,没办法接下来愉快的使用。如下: 而想要新建Linux用户密码,请您执行以下步骤: . 1.打开终端并以root身份登录; 2.输入命令“useradd username",其中username为您新建的用户名; 3.使用命令“passwd usernam…

《向量数据库指南》——向量搜索库Faiss 迁移到 Milvus 2.x

Faiss -> Milvus 2.x 1. Faiss 数据准备 前提条件是用户已经准备好了自己的 faiss 数据文件。(为了能快速体验,在项目源码的 testfiles 目录下放置了 faiss 测试数据方便用户体验: faiss_ivf_flat.index. 2. 编译打包 这部分同上,不再展开介绍。 3. 配置 migration.ymal…

【数据结构】顺序查找,折半查找,分块查找的知识点总结及相应的代码实现

目录 1、顺序查找 定义及步骤 代码实现 2、折半查找 定义及步骤 代码实现 折半查找判定树 3、分块查找 定义及步骤 1、顺序查找 定义及步骤 顺序查找的定义:从数据集合的起始位置开始,逐一比较每个数据元素,直到找到所要查找…

百度SEO优化不稳定的原因分析(提升网站排名的稳定性)

百度SEO优化不稳定介绍蘑菇号-www.mooogu.cn SEO不稳定是指网站在搜索引擎中的排名不稳定,随着时间的推移会发生变化。这种情况可能会出现在网站页面结构、内容质量、外链质量等方面存在缺陷或不合理之处。因此,优化SEO非常重要,可以提高网站…

4+机器学习+实验验证

今天给同学们分享一篇4机器学习实验验证的生信文章“Identification and Analysis of Neutrophil Extracellular Trap-Related Genes in Osteoarthritis by Bioinformatics and Experimental Verification”,这篇文章于2023年8月31日发表在 J Inflamm Res 期刊上&am…

两个数使用JavaScript比较大小;JavaScript知识点

一、两个数使用JavaScript比较大小代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script type"text/javascript">var aprompt("请输入第一个数:"…

Web自动化测试 —— 如何进行Selenium页面数据及元素交互?啊哈

前言&#xff1a; Web自动化测试是一种常用的测试方式&#xff0c;通过在浏览器中模拟用户操作以及与页面元素的交互&#xff0c;可以有效地检验页面的功能性以及稳定性。Selenium是一款流行的Web自动化测试工具&#xff0c;在本篇文章中&#xff0c;我们将介绍如何使用Seleni…

青大数据结构【2022】

关键字&#xff1a; next数组、下三角矩阵、完全二叉树结点、静态分布动态分布、迪杰斯特拉最短路径、二叉排序树失败ASL、排序比较、二叉排序树中序遍历、链表删除最大值 一、单选 二、简答 三、应用 四、算法分析 五、算法设计

nginx反向代理vue项目

文章目录 前言一、创建站点1.添加站点2.添加ssl证书 二、反向代理vue项目1.添加反向代理2.更改vue项目配置3.修改反向代理配置 前言 项目描述&#xff1a;前端vue项目、后端Java项目、首页WordPress项目 客户要求&#xff1a;使用宝塔进行部署 需求描述&#xff1a;客户只有一…

【Java】Servlet API

Servlet API HttpServlet核心方法Servlet生命周期 HttpServletRequest核心方法 HttpServletResponse核心方法 HttpServlet 我们写 Servlet 代码的时候, 首先第一步就是先创建类, 继承自 HttpServlet, 并重写其中的某些方法. 核心方法 方法名称调用时机init在 HttpServlet 实…

李宏毅机器学习第一课

机器学习就是让机器找一个函数f&#xff0c;这个函数f是通过计算机找出来的 如果参数少的话&#xff0c;我们可以使用暴搜&#xff0c;但是如果参数特别多的话&#xff0c;我们就要使用Gradient Descent Regression (输出的是一个scalar数值) Classification &#xff08;在…

美团2024届秋招笔试第一场编程[汇总](上课口胡一下)

一.小美的好矩阵 口胡&#xff1a;模拟题&#xff0c;数据和题意灰常清楚。 俩层循环枚举每个3&#xfe61;3的小矩阵&#xff0c;然后枚举每个小矩阵&#xff0c;12个if判断俩俩相邻的字符是否相等。这里有个技巧&#xff1a;拿出中间的字符&#xff0c;这样就能使用一个偏移…

基于紫光同创FPGA的图像采集及AI加速

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处 适用于板卡型号&#xff1a; 紫光同创PGL50H开发平台&#xff08;盘古50K开发板&#xff09; 本篇优秀作品&#xff1a;2023集创赛全国总决赛紫光同…

Lua学习笔记:词法分析

前言 本篇在讲什么 Lua的词法分析 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449; ♠ 一级标题…

stm32之PWM呼吸灯

呼吸灯是灯从渐亮到渐灭周而复始形成的一个效果。由于51没有PWM所以需要定时器模拟PWM才能实现呼吸灯的效果&#xff0c;但是stm32的通用定时器是有PWM模式的&#xff0c;所以不需要再用软件模拟&#xff0c;精准度也高。 本实验用的基于stm32f103C8t6。在PB8引脚上接了一个le…

stm32之串口/蓝牙控制led灯

该文章记录学习stm32串口遇到的一些问题&#xff0c;完整代码地址。 一、项目描述 通过串口或蓝牙发送指令来控制led灯。 open ------> led 亮close ------> led 灭其它 -------> 反馈给串口或蓝牙错误指令 二、项目用到的模块 stm32 串口1,PA9(TX), PA10(RX)HC…

计算机组成与设计硬软件接口学习2

并行处理器&#xff1a;从客户端到云 任务级并行或进程级并行&#xff1a;通过同时运行独立的多个程序来使用多处理器 并行处理程序&#xff1a;同时在多个处理器上运行的单个程序 通过增加硬件的方式&#xff0c;将取指令和指令译码实现并行&#xff0c;一次性取出多条指令…

MQTT 协议概要

01 MQTT协议 MQTT&#xff08;消息队列遥测传输&#xff09; 是基于 TCP/IP 协议栈而构建的支持在各方之间异步通信的消息协议。MQTT在空间和时间上将消息发送者与接收者分离&#xff0c;因此可以在不可靠的网络环境中进行扩展。虽然叫做消息队列遥测传输&#xff0c;但它与消息…

[RF学习记录][ssh library][execute Command】关键字的返回值

有时候需要判断通过ssh在远程机器上执行的命令是否正常&#xff0c;使用关键字Execute Command可以在远程机器上运行命令&#xff0c;但是默认不加任何参数的话&#xff0c;没有看到范返回值&#xff0c;而这个关键字是带了几个参数的&#xff0c;简单的试验了下这几个参数&…

点云从入门到精通技术详解100篇-单期点云的高斯曲率定位桥梁潜在损伤技术研究

目录 前言 国内外研究现状 三维激光扫描对桥梁损伤检测的研究现状 基于点云高斯曲率损伤检测的研究现状 柱体偏差检测技术研究现状 存在的问题 法向量约束高斯曲率的 TLS 桥面潜在损伤区域探测 2.1 高斯曲率探伤的基本理论 2.2 点云拓扑关系建立的方法比较 2.2.1 KD-…