【问题标题】:Resolve enum naming issue - Qt解决枚举命名问题 - Qt
【发布时间】:2017-10-10 09:22:42
【问题描述】:

我正在尝试在我的项目中包含 QSoundeffect,但出现编译器错误 /home/innereye/Qt5.7.0/5.7/gcc_64/include/QtMultimedia/qsoundeffect.h:76: error: expected unqualified-id before '{' token

当我查看代码中的相关行时,我看到一个声明了名称为 Status 的枚举。

enum Status
{
        Null,
        Loading,
        Ready,
        Error
}; 

如果我将枚举名称更改为 Status1,编译是可以的,但我不想避免它并且不更改 Qt 源代码。 有没有办法查看为什么编译器无法解决它?我的项目中没有任何具有该名称的枚举,但也许其中一个库或外部源使用它?

在 ubuntu 16.04 上使用 Qt 5.7

【问题讨论】:

  • your 类型使用命名空间。总体而言,良好的经验法则。在处理尚未理解良好命名空间分区概念的库时特别有用,例如 Qt。
  • 你的代码中有一些定义吗?
  • 我有定义,但没有一个被称为状态。我的项目不包含“状态”一词作为名称
  • 对你的枚举有命名空间。链接:stackoverflow.com/questions/7090130/enum-in-a-namespace
  • 正如我所说,我不想更改 Qt 源代码中的代码。有没有办法找出编译器产生错误的原因?

标签: c++ qt enums compiler-errors


【解决方案1】:

感谢所有帮助,经过反复试验,我弄清楚了问题所在,并且在 include GL/glx.h 之前移动 #include 行解决了问题。这是因为 /usr/include/X11/Xlib.h 有以下行 - #define Status int

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    相关资源
    最近更新 更多