如何在gcc编译日志中识别警告类型以禁用它?

时间:2016-12-28 16:10:33

标签: g++ compiler-warnings

当我在Eclipse CDT Indigo和g ++(Debian 4.9.2-10)4.9.2下编译项目时,我有很多警告。从here开始,可能会有一些Eclipse解析器错误,可能还有一些外部库错误。

我当然会升级Eclipse,但我现在不能。

我希望能够抑制这些繁琐的警告。我阅读了手册here,但我仍然没有看到如何确定要设置的选项。我在Eclipse中取消选中了-Wall选项,但没有任何改变。现在禁用所有Eclipse警告。

这是我的编译日志的pastbin

1 个答案:

答案 0 :(得分:1)

看起来有些东西吃了你的实际警告线。所有gcc警告都有"警告"至少在其中一行中。

编辑 gcc的某些版本实际上会生成类似的消息("注意"行,"需要"行,"实例化来自"行...但没有实际"错误"或"警告"行)。看起来gcc中存在一个错误。 - 结束编辑。

在所有gcc警告中,我知道只有一个与重载有关并且有#34;注意"列出候选函数的子消息。警告读取

  

C ++说这些都是模棱两可的,即使第一次转换的最差转换比第二次转换的最差转换

并且无法关闭。如果您看到此类警告,则您的程序不合规,您应该修复它。

以下是此类不合规代码的示例。与您的功能签名匹配:

#include <string>

struct KeyWord
{
    KeyWord(const std::string&);
    operator std::string&() const;
};

struct A
{
    bool operator() (const std::string&, const std::string&) const;
    bool operator() (const KeyWord&, const KeyWord&);
};

int main ()
{
    A a;
    std::string s;
    const std::string r;
    a(s, r);
}

让第二个operator() const解决问题。