G を使用した C コンパイルに対する徹底的かつ詳細な警告フラグ
Gcc は、開発者が潜在的な問題を検出するのに役立つ、包括的な警告フラグのセットを提供します。彼らのコード。 C で徹底的で詳細な警告を有効にするには、次の推奨事項を考慮してください。
必須の警告:
- -pedantic: strict に従うC 言語標準。
- -Wall: 一般に受け入れられているすべてをアクティブ化します。 warnings.
- -Wextra: 警告範囲を -Wall を超えて拡張します。
- -Wcast-align: 位置ずれしたポインター キャストを検出します。
- -Wcast-qual: ポインター型の変更について警告するqualifiers.
- -Wctor-dtor-privacy: クラス コンストラクターとデストラクターのアクセス修飾子に関する問題を強調表示します。
- -Wdisabled-optimization: コードを識別します最適化は可能ですが、 not.
- -Wformat=2: コンパイル時の形式指定子の処理を改善します。
- -Winit-self: 変数がそれ自体に再初期化されるのを防ぎます。 .
- -Wlogical-op: 潜在的な演算子の優先順位を検出しますissues.
- -Wmissing-declarations: 変数と関数の宣言の欠落について警告します。
- -Wmissing-include-dirs: 欠落しているインクルード ディレクトリを強調表示します。 .
- -WnoExcept: 例外処理を奨励しますメカニズム.
- -Wold-style-cast: 潜在的なコード互換性の問題を特定します。
- -Woverloaded-virtual: 仮想メソッドのオーバーロードについて警告します。
- -Wredundant-decls: 冗長性を指摘します宣言.
- -Wshadow: 変数の意図しないシャドウイングを防ぎます。
- -Wsign-conversion: 可能性のある符号変換エラーを検出します。
- -Wsign-promo: 潜在的なサインプロモーションを強調表示します問題。
- -Wstrict-null-sentinel: null センチネル値を制御することでコードの安全性を強化します。
- -Wstrict-overflow=5: 制限整数オーバーフローのレベルを 5 つの警告に設定します。
- -Wswitch-default:包括的な switch ステートメントの処理を確保します。
- -Wundef: 未定義の変数またはマクロについて警告します。
- -Wno-unused: 未使用変数の警告を除外します。より重要な問題への焦点を強化します。
オプションですが疑問があります警告:
- -Wdisabled-optimization: 最適ではないコードを示す可能性がありますが、必ずしもエラーであるとは限りません。
- -Wfloat-equal: 安全な等価性のために誤検知を引き起こす可能性があります比較。
- -Wold-style-cast: サードパーティのライブラリでは誤検知がある可能性があります。
- -Wsign-conversion: 注意が必要ですエラーを防ぐためにデータ型に注意してください。
- -Wsign-promo: と同様の考慮事項-Wsign-conversion.
- -Wswitch-default: switch ステートメントのケースの明示的な処理を強制しますが、面倒な場合があります。
除外すべき警告:
これらの警告は、誤検知の可能性があるか制限されているため省略されています。ユーティリティ:
- -Wabi: さまざまなソースからのバイナリのコンパイルが必要です。
- -Waggregate-return: 暗黙的なデータ型を示す場合があります。 versions.
- -Wconversion: 無害な暗黙的な警告を生成する可能性があります変換。
- -Weffc : 無関係な警告が乱雑に表示される可能性があります。
- -Winline: すべてのインライン メソッド シナリオに適用できるわけではありません。
- -Winvalid-pch: プリコンパイル済みファイルを使用しないプロジェクトには適用されませんheaders.
- -Wmissing-format-attribute: 一般的に使用されない GNU 拡張機能が必要です。
- -Wpadded: クラス レイアウトの手動最適化が必要です。
- -Wstack-protector: 特定のコンパイラが必要ですスタック保護のためのフラグ。
- -Wstrict-aliasing=3: 下位レベルと比較して、制限付きの追加警告を提供します。
- -Wswitch-enum:制限が厳しすぎるため、すべての用途に適しているわけではない可能性がありますcase.
- -Wunsafe-loop-optimizations: 特定のシナリオで偽の警告が生成される可能性があります。