如何在Qt Creator中抑制警告提示

8
我想知道在Qt-Creator中是否有可能抑制编译器特定的警告。我的g++-4.5输出如下所示:"warning: enumeral and non-enumeral type in conditional expression"。我想摆脱它,因为它非常烦人。谢谢!(系统信息:Ubuntu 11.04 x64、g++-4.5、QtCreator 2.01、Qt 4.7)
5个回答

8
您需要使用以下内容:

QMAKE_CXXFLAGS += -Wno-enum-compare

如果您收到以-Wenum-compare结尾的警告,例如。
此外,请注意,根据GCC文档,有些警告无法被抑制,请查看这些不能被抑制的警告,这样您就不会得到错误的想法,认为您的标志没有正常工作。
显然,了解标志是否传递给编译器的最佳方法是查看编译器输出,并确保您的标志存在,例如,即使该标志未抑制任何内容,您应该在命令行中看到-Wno-enum-compare。你会惊讶于像这样的东西很难找到信息,我进行了一些挖掘,最终发现它来自编辑.pro文件时的自动完成,如果您在编辑.pro文件时遇到问题,请按Ctrl+Space(或开始输入一个单词并按Shift+Home),以获取与任何其他常规源文件一样可以在您的.pro文件中使用的有效内容列表。它帮助我找到了正确的东西(结果证明,通常不是人们建议的QMAKE_CXXFLAGS,由于某种原因)...哦是的,这是关于Qt版本4.8,creator 2.4,因此可能已经发生了变化,自从发布以来(他们似乎非常喜欢这样做,我已经看到新版本已经发生了巨大变化)。

1
无法工作。我正在使用Qt Creator 4.1.0(4.1.0-rc1) - Tomáš Zato

2

谢谢。另外,如果您添加了“CONFIG += warn_off”,那么它将使用您在“QMAKE_CXXFLAGS_WARN_OFF”中设置的标志,而不是默认情况下关闭Wall和Wextra的“QMAKE_CXXFLAGS_WARN_ON”。 - Jason C

2

我已经查看了gcc的警告选项。Gcc有一个名为-Wenum-compare的选项,它负责发出警告,但是没有-Wno-enum-compare选项。除非显式设置,否则-Wenum-compare选项很可能由-Wall设置。因此,我建议禁用-Wall


0

你可能有两个选择:

  1. 修复警告本身(上面看起来你可能需要一个强制转换)
  2. 找到由g++发出的要删除的警告名称,然后在.pro文件中将它们添加到CFLAGS中,并在前面加上“no-”。类似于:

    CFLAGS += -Wno-my-super-warning-I-found


谢谢,这对于一般警告很有效,但不幸的是对于这种情况不行...我不知道如何消除那个警告... - linello

0

对于某些代码:

QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wenum-compare")

// Some code than throwns warnings

QT_WARNING_POP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接