私は、Linux、OS X、および Windows のさまざまなフレーバーで開発および実行される大規模な共同 C++ プロジェクトに取り組んでいます。GCC、Visual Studio C++、および Intel C++ コンパイラを使用して、これらのプラットフォーム全体でコンパイルします。プロジェクトのコードの開発を開始する人が増えるにつれて、特定のオペレーティング システムの特定のコンパイラに固有の奇妙なエラーがコンパイルおよび実行時に見られるようになっています。この例は、特定の OS/コンパイラのペアが見つけたように見えるヘッダーを暗黙的にインクルードし、誤って派生クラスの基本クラスから関数をオーバーロードすることです。
私の目標は、GCC でのコンパイルをより厳密にし、すべてのプラットフォームでより多くのエラーを検出して、これらの問題に遭遇し続けないようにすることです。Google と GCC の man ページで見つけた、GCC で試してみようと考えているフラグのリストを次に示します。
- -壁
- -ウェクストラ
- -Winit-self
- -Wold-style-キャスト
- -Woverloaded-仮想
- -Wuninitialized
- -Wmissing-宣言
- -Winit-self
- -ansi
- -ペダンティック
GCC (およびそれほど重要ではない Visual Studio C++ と Intel C++ Compiler) を C++ 言語のより厳密な標準に準拠させるために人々が使用する他のフラグは何ですか? これらのいくつかは、すべてのコンパイラのすべてのバージョンで実装されていない可能性があるため、話しているコンパイラとバージョンを具体的にしてください。