我们需要在没有最高级别gcc警告的情况下进行项目编译。目前,我们对以下内容提出了很多警告:
struct Bob
{
int a;
int b;
Bob()
: b(0)
, a(0)
{
}
};
警告说初始化列表的顺序与成员在类中声明的顺序不匹配。我理解这个警告是因为初始化的实际顺序来自类中成员的顺序,如果有些依赖于其他顺序,以相同的顺序排列初始化列表可以帮助发现错误。
但是,我们有TONS(和吨)代码,它们的初始化列表与成员顺序不匹配,并且成员不相互依赖,所以没有问题。但我们需要从代码中删除所有警告。
我们有什么自动解决方法吗?我提到过我们有很多代码吗?
谢谢!
答案 0 :(得分:1)
假设您有一个明智的人要求您“没有警告”,那么您可以请求例外并“禁用此警告”。它可能应该在逐个文件的基础上完成,理想情况下使用书面的“未来修复计划”解决方案,而不是批发“让我们为所有文件禁用此警告”。
另一个选项是查找导致警告的所有位置,并重新排序初始化程序。
请注意,警告只是说“初始化的顺序与您编写的顺序不同”,因此重新排序根本不会改变代码的行为 - 编译器已经为您重新排序!
答案 1 :(得分:0)
您可以使用
-Wno-reorder
只是禁用这些警告。