解决关于初始化列表顺序与成员顺序不匹配的警告



我们需要得到我们的项目编译没有警告从最高级别的gcc。目前我们有很多关于以下内容的警告:

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

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

然而,我们有大量的代码,这些代码的初始化列表不匹配成员顺序,成员之间不依赖,所以没有问题。但是我们需要从代码中删除所有警告。

有什么自动的方法可以解决这个问题吗?我说过我们有大量的代码吗?

谢谢! !

假设您有一个明智的人正在请求您"没有警告",那么您可以请求一个异常并"禁用此警告"。它可能应该在一个文件一个文件的基础上完成,理想情况下,有一个书面的"计划在未来修复"的解决方案,而不是一个大规模的"让我们禁用所有文件的这个警告"。

另一种选择是找到所有导致警告的地方,并重新排序初始化式。

注意,这个警告只是说"初始化的顺序与你写的顺序不同",所以重新排序根本不会改变你的代码的行为——编译器已经为你做了重新排序!

可以使用

-Wno-reorder

禁用这些警告

最新更新