QT 汉字报错:此字符不允许在标识符中使用、常量中有换行符

今天在写表格 QTableWidget 设置表格标题时遇到以下报错,注释那行就不报错,上面打开就报错。不知道复制粘贴的原因还是什么。

构建:

先找办法解决:

QT界面菜单栏->工具->选项->文本编辑器,修改成如果编码是UTF-8则添加

在头文件 加 #pragma execution_character_set("utf-8")

以上不行。


出现这种情况的可能是在使用Qt的时候采用了msvc编译,源代码文件是无BOM的utf-8编码格式,QtCreator用MinGw编译OK,切换成MSVC后报错。

在 工程文件 .pro 添加

msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}

这种方法可以

### Qt 中 C2001 编译错误的原因与解决方案 在 Qt 开发过程中,当编译器报告 `error: C2001` 错误时,通常表示源代码中的某个字符常量存在非法换行的情况。这种问题可能由多种因素引起,包括但限于文件编码匹配、字符串拼接当以及宏展开异常等问题。 #### 文件编码问题 如果项目中涉及中文字符,则可能是由于文件编码设置一致引起的。Visual Studio 默认使用的编码格式为 ANSI 或 UTF-8 无 BOM,而某些情况下需要将文件编码更改为 GB2312 才能正常解析中文字符[^5]。可以通过以下方法更改文件编码: 1. 使用 Visual Studio 的 **高级保存选项** 功能修改文件编码为 GB2312。 2. 如果找到“高级保存选项”,可以按照描述的操作步骤手动添加此功能到菜单栏中。 #### 字符串处理方式 对于包含多行字符串的场景,建议采用合法的方式进行分割和连接。例如,在 C++ 中可以直接使用反斜杠 `\` 来实现跨行书写,但需注意每行结尾得有额外空白字符[^4]。以下是示例代码展示如何正确编写多行字符串: ```cpp QString str = "这是一个测试" "字符串"; ``` 另一种推荐的方法是在头文件或相关 cpp 文件顶部加入特定指令以指定执行字符集为 utf-8,从而避免因编码差异引发的问题: ```cpp #pragma execution_character_set("utf-8") ``` #### 示例综合解决方案 下面提供了一个完整的例子来演示上述两种策略的应用: ```cpp // 确保所有字符串均按 utf-8 处理 #pragma execution_character_set("utf-8") #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QString text = "这是一段用于测试的文字。\n" "它跨越了两行但仍保持有效。"; QLabel label; label.setText(text); label.show(); return app.exec(); } ``` 通过以上措施,大多数关于 `C2001` 的常见问题都可以得到有效缓解。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值