1

我们需要让我们的项目在没有来自最高级别 gcc 的警告的情况下编译。目前,我们有很多关于以下内容的警告:

struct Bob
{
    int a;
    int b;

    Bob()
        : b(0)
        , a(0)
    {
    }
};

警告说初始化列表的顺序与类中声明成员的顺序不匹配。我理解这个警告,因为真正的初始化顺序来自于类中成员的顺序,如果有些依赖于其他的,按照相同的顺序排列初始化列表可以帮助发现错误。

但是,我们有大量(和大量)代码,其初始化列表与成员顺序不匹配,并且成员不相互依赖,所以没有问题。但是我们需要从我们的代码中删除所有警告。

有没有一些自动的方法可以解决这个问题?我有没有提到我们有大量的代码?

谢谢!!

4

2 回答 2

1

假设您有一个明智的人要求您“没有警告”,那么您可以请求例外并“禁用此警告”。它可能应该在逐个文件的基础上完成,最好使用书面的“计划在未来修复”解决方案,而不是批发“让我们对所有文件禁用此警告”。

另一种选择是查找导致警告的所有位置,并重新排序初始化程序。

请注意,警告只是说“初始化发生的顺序与您编写的顺序不同”,因此重新排序根本不会改变代码的行为 - 编译器已经为您重新排序!

于 2013-04-08T15:43:15.050 回答
0

您可以使用

-Wno-reorder

只是禁用这些警告。

于 2013-04-08T15:38:45.350 回答