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 に答える