qt中出现error: C2059: 语法错误:“namespace”未定义等大量错误的问题

Posted chencarl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt中出现error: C2059: 语法错误:“namespace”未定义等大量错误的问题相关的知识,希望对你有一定的参考价值。

昨天下载了一个github上的qt工程,拿回来一编译出现了N多错误,但是工程明明是正确的,没有什么特殊的配置设置,
但是就是几乎所有的代码都在报错。
可以看到关于类的操作都有问题
..\\qtprocess\\mainwindow.cpp: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 ..\\qtprocess\\mainwindow.cpp(11): error C2447: “{”: 缺少函数标题(是否是老式的形式表?) ringsprogressbar.cpp c:\\users\\administrator\\documents\\qtprocess\\ringsprogressbar.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(149): error C2804: 二进制“operator |”的参数太多 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(149): error C2333: “RingsProgressbar::operator |”: 函数声明中有错误;跳过函数体 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(152): error C3254: “RingsProgressbar”: 类包含显式重写“setAlignment”,但并不从包含函数声明的接口派生 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(152): error C2838: “setAlignment”: 成员声明中的限定名称非法 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(155): error C3254: “RingsProgressbar”: 类包含显式重写“setFlags”,但并不从包含函数声明的接口派生 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(155): error C2838: “setFlags”: 成员声明中的限定名称非法 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(159): error C3254: “RingsProgressbar”: 类包含显式重写“setTabStop”,但并不从包含函数声明的接口派生 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(159): error C2838: “setTabStop”: 成员声明中的限定名称非法 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(163): error C3254: “RingsProgressbar”: 类包含显式重写“setTabStopDistance”,但并不从包含函数声明的接口派生 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(163): error C2838: “setTabStopDistance”: 成员声明中的限定名称非法 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qtextoption.h(167): error C3412: “QMetaTypeId<RingsProgressbar::QTextOption::Tab>”: 不能在当前范围内专用化模板 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qpen.h(56): error C2804: 二进制“operator <<”的参数太多 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qpen.h(57): error C2804: 二进制“operator >>”的参数太多 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qpen.h(133): error C3412: “QTypeInfo<RingsProgressbar::QPen>”: 不能在当前范围内专用化模板 C:\\Qt\\Qt5.12.10\\5.12.10\\msvc2017\\include\\QtGui/qpen.h(136): error C2804: 二进制“operator <<”的参数太多 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(495): error C3412: “QTypeInfo<RingsProgressbar::QPainter::PixmapFragment>”: 不能在当前范围内专用化模板 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(497): error C2804: 二进制“operator |”的参数太多 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(497): error C2333: “RingsProgressbar::operator |”: 函数声明中有错误;跳过函数体 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(503): error C3254: “RingsProgressbar”: 类包含显式重写“drawLine”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(503): error C2838: “drawLine”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(508): error C3254: “RingsProgressbar”: 类包含显式重写“drawLine”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(508): error C2838: “drawLine”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(513): error C3254: “RingsProgressbar”: 类包含显式重写“drawLine”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(513): error C2838: “drawLine”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(519): error C3254: “RingsProgressbar”: 类包含显式重写“drawLine”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(519): error C2838: “drawLine”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(525): error C3254: “RingsProgressbar”: 类包含显式重写“drawLine”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(525): error C2838: “drawLine”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(530): error C3254: “RingsProgressbar”: 类包含显式重写“drawLines”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(530): error C2838: “drawLines”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(535): error C3254: “RingsProgressbar”: 类包含显式重写“drawLines”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(535): error C2838: “drawLines”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(540): error C3254: “RingsProgressbar”: 类包含显式重写“drawLines”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(540): error C2838: “drawLines”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(545): error C3254: “RingsProgressbar”: 类包含显式重写“drawLines”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(545): error C2838: “drawLines”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(550): error C3254: “RingsProgressbar”: 类包含显式重写“drawPolyline”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(550): error C2838: “drawPolyline”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(555): error C3254: “RingsProgressbar”: 类包含显式重写“drawPolyline”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(555): error C2838: “drawPolyline”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(560): error C3254: “RingsProgressbar”: 类包含显式重写“drawPolygon”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(560): error C2838: “drawPolygon”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(565): error C3254: “RingsProgressbar”: 类包含显式重写“drawPolygon”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(565): error C2838: “drawPolygon”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(570): error C3254: “RingsProgressbar”: 类包含显式重写“drawConvexPolygon”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(570): error C2838: “drawConvexPolygon”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(575): error C3254: “RingsProgressbar”: 类包含显式重写“drawConvexPolygon”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(575): error C2838: “drawConvexPolygon”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(580): error C3254: “RingsProgressbar”: 类包含显式重写“drawRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(580): error C2838: “drawRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(585): error C3254: “RingsProgressbar”: 类包含显式重写“drawRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(585): error C2838: “drawRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(591): error C3254: “RingsProgressbar”: 类包含显式重写“drawRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(591): error C2838: “drawRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(596): error C3254: “RingsProgressbar”: 类包含显式重写“drawRects”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(596): error C2838: “drawRects”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(601): error C3254: “RingsProgressbar”: 类包含显式重写“drawRects”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(601): error C2838: “drawRects”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(606): error C3254: “RingsProgressbar”: 类包含显式重写“drawPoint”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(606): error C2838: “drawPoint”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(611): error C3254: “RingsProgressbar”: 类包含显式重写“drawPoint”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(611): error C2838: “drawPoint”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(617): error C3254: “RingsProgressbar”: 类包含显式重写“drawPoint”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(617): error C2838: “drawPoint”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(622): error C3254: “RingsProgressbar”: 类包含显式重写“drawPoints”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(622): error C2838: “drawPoints”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(627): error C3254: “RingsProgressbar”: 类包含显式重写“drawPoints”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(627): error C2838: “drawPoints”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(632): error C3254: “RingsProgressbar”: 类包含显式重写“drawRoundRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(632): error C2838: “drawRoundRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(637): error C3254: “RingsProgressbar”: 类包含显式重写“drawRoundRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(637): error C2838: “drawRoundRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(643): error C3254: “RingsProgressbar”: 类包含显式重写“drawRoundedRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(643): error C2838: “drawRoundedRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(649): error C3254: “RingsProgressbar”: 类包含显式重写“drawRoundedRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(649): error C2838: “drawRoundedRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(654): error C3254: “RingsProgressbar”: 类包含显式重写“drawEllipse”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(654): error C2838: “drawEllipse”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(659): error C3254: “RingsProgressbar”: 类包含显式重写“drawEllipse”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(659): error C2838: “drawEllipse”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(664): error C3254: “RingsProgressbar”: 类包含显式重写“drawEllipse”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(664): error C2838: “drawEllipse”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(669): error C3254: “RingsProgressbar”: 类包含显式重写“drawArc”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(669): error C2838: “drawArc”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(674): error C3254: “RingsProgressbar”: 类包含显式重写“drawArc”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(674): error C2838: “drawArc”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(679): error C3254: “RingsProgressbar”: 类包含显式重写“drawPie”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(679): error C2838: “drawPie”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(684): error C3254: “RingsProgressbar”: 类包含显式重写“drawPie”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(684): error C2838: “drawPie”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(689): error C3254: “RingsProgressbar”: 类包含显式重写“drawChord”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(689): error C2838: “drawChord”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(694): error C3254: “RingsProgressbar”: 类包含显式重写“drawChord”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(694): error C2838: “drawChord”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(699): error C3254: “RingsProgressbar”: 类包含显式重写“setClipRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(699): error C2838: “setClipRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(704): error C3254: “RingsProgressbar”: 类包含显式重写“eraseRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(704): error C2838: “eraseRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(709): error C3254: “RingsProgressbar”: 类包含显式重写“eraseRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(709): error C2838: “eraseRect”: 成员声明中的限定名称非法 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(714): error C3254: “RingsProgressbar”: 类包含显式重写“fillRect”,但并不从包含函数声明的接口派生 c:\\qt\\qt5.12.10\\5.12.10\\msvc2017\\include\\qtgui\\qpainter.h(714): fatal error C1003: 错误计数超过 100;正在停止编译

想了一下,应该不是代码内容的问题,那就只能出在格式上,首先查看代码的编码格式,是UTF-8没错,不是编码问题。这就奇怪了,查看系统设置里面,发现除了编码格式,还有换行符的设置。

查看了一下,果然下载的内容默认设置的是UNIX的LF格式,全部改成CRLF后,编译正常。
总结一下网上说的该类问题的原因主要分为三种:

  1. 文件编码格式,要于qt中设置一致;
  2. 换行符格式,要于qt中设置一致;
  3. 文件循环引用的问题,记得要设置宏

以上是关于qt中出现error: C2059: 语法错误:“namespace”未定义等大量错误的问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言错误 error C2059: 语法错误:“)”以及 错误error C2065: “sockaddr”: 未声明的标识符

解决error C2059: 语法错误:“::”问题

关于CUDA C 项目中“ error C2059: 语法错误:“<” ”问题的解决方法

突然出现错误gdiplustypes.h(280): error C2059: syntax error : 'constant'等未知错误

错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”

错误 C2059:语法错误“常量”[重复]