【问题标题】:Qt QPainterpath.h errorsQt QPainterpath.h 错误
【发布时间】:2013-04-18 05:32:50
【问题描述】:

我目前正在开发一个Qt 应用程序,其中包含来自Qt 库的许多#include 文件。项目挺大的,在搭建的时候遇到了一个奇怪的问题。显示的错误都在QPainterpath.h 文件中,但与我的项目对其的调用无关。错误都是这样的:

c:\qt\4.8.4\include\qtgui../../src/gui/painting/qpainterpath.h(397):错误 C2143:语法错误:缺少 ';'在'::'之前

c:\qt\4.8.4\include\qtgui../../src/gui/painting/qpainterpath.h(397):错误 C2059:语法错误:'::'

c:\qt\4.8.4\include\qtgui../../src/gui/painting/qpainterpath.h(398):错误 C2143:语法错误:缺少 ';'在'{'之前

c:\qt\4.8.4\include\qtgui../../src/gui/painting/qpainterpath.h(398) : 错误 C2447: '{' : 缺少函数头(旧式正式列表?)

c:\qt\4.8.4\include\qtgui../../src/gui/painting/qpainterpath.h(405) : 警告 C4003: 宏 'elementCount' 的实际参数不足

我之前遇到过一次,并且能够通过将一些 Qt #include 语句移到它们下方的其他类标题之前调用来解决它。不过,我似乎无法弄清楚这次是什么原因造成的。任何想法都会很棒!

谢谢!

【问题讨论】:

    标签: c++ qt compiler-errors include-path qpainter


    【解决方案1】:

    当您忘记用分号关闭类定义时,我已经看到了这种情况。如果您查看编译器的输出,并查看在此错误开始之前编译了哪个文件,您可能会得到答案。在先前编译的文件末尾查找缺少; 或额外} 或缺少} 的语法错误。

    它也可能来自您的#include <QPainter> 调用上方列出的有错误的.h 文件。

    希望对您有所帮助。

    【讨论】:

    • 这也是我最初的想法,但它发生在多个 .cpp 文件之后。所有这些都已彻底检查是否缺少大括号和分号以及其中包含的标题。我的想法是,这与 Qt 库不喜欢它们被包含在文件中的顺序有关,但通常这无关紧要。
    • 如果存在一些奇怪的循环依赖关系,qt-project.org/wiki/Qt-In-Namespace 可能会有所帮助。您是否将正确的模块添加到您的 .pro 文件中? qt-project.org/doc/qt-4.8/…
    • 所以我在错误发生之前检查了文件,发现了一个包含在另一个类头之前的 GlobalData.h。我在所有其他标题之后添加了它,现在它似乎工作正常。我还检查并确保按 C++ 头文件、Qt 头文件、第 3 方头文件和我们自己的类头文件对每个头文件进行排序。调用类而不是标头存在一些差异,因此感谢您提供该文档。感谢您的帮助!
    【解决方案2】:

    我正在与 RyGuyFalcore 合作,并弄清楚为什么我们的代码会发生这种情况,而其他人没有看到它。问题是我们的遗留代码重新定义了 elementCount 宏。因此,如果我们在包含 Qt 代码之前包含了遗留代码的那部分,则使用了错误的宏 :( 想我会在此处发布此内容以避免其他人遇到类似错误时可能会遇到的任何疯狂追逐。

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多