本ガイドは、gcc の警告を品質ゲートとして活用し、
EL8 (gcc8) と EL10 (gcc14) の両環境でビルドを破綻させずに
ロバストな C / C++ プログラミングを行うことを目的としています。
特に以下を重視しています。
-Wall -Wextra
-Wformat=2
-Wshadow
-Wundef
-Wpointer-arith
-Wcast-qual
-Wcast-align
-Wswitch-enum
-Wswitch-default
-Wpacked
-Wpadded
-Wunknown-pragmas
-Wmissing-prototypes
-Wstrict-prototypes
-Wmissing-declarations
WARN_BASE = \
-Wall -Wextra \
-Wformat=2 \
-Wshadow -Wundef \
-Wpointer-arith -Wcast-qual -Wcast-align \
-Wswitch-enum -Wswitch-default \
-Wpacked -Wpadded \
-Wunknown-pragmas
WARN_C_ONLY = \
-Wmissing-prototypes \
-Wstrict-prototypes \
-Wmissing-declarations
CFLAGS += $(WARN_BASE) $(WARN_C_ONLY)
CXXFLAGS += $(WARN_BASE)-Wall
一般的に有用とされる基本警告群です。
-Wextra
-Wall に含まれない追加警告です。
-Wformat=2
printf 系フォーマット不整合を厳密に検出します。
-Wshadow
変数の意図しない隠蔽を検出します。
-Wundef
未定義マクロ使用を検出します。
-Wpointer-arith
非標準なポインタ演算を検出します。
-Wcast-qual
const / volatile 除去キャストを検出します。
-Wcast-align
アラインメント破壊の可能性を検出します。
-Wswitch-enum
enum の未処理列挙子を検出します。
-Wswitch-default
default 節の無い switch を検出します。
-Wpacked
packed 指定による危険なレイアウトを検出します。
-Wpadded
暗黙パディングの発生を検出します。
-Wunknown-pragmas
未対応 pragma を検出します。
-Wmissing-prototypes (C)
非 static 関数の未宣言を検出します。
-Wstrict-prototypes (C)
古い関数宣言形式を検出します。
-Wmissing-declarations (C)
ヘッダ未宣言のグローバル関数を検出します。