Last Update 2021/11/14
誤りが疑われるメモリアドレスの使用についての警告
構造体や共用体を返す関数の定義・呼び出しがある場合に警告
一部の使用者に疑問視される構文で、使用を避ける事が容易なものに関する警告オプションを全て有効化
関数呼び出しが一致しない型にキャストされた場合に警告を出力
ブール式が真偽値と異なる整数値と比較された場合に警告を出力
ブール値の式での疑わしい演算に対する警告
ISO C99には有るがISO C90には無い機能に関して警告を出力
ISO C11には有るがISO C99には無い機能に関して警告を出力
ポインタがキャストされる際、型修飾子が外された場合などに警告を出力
配列の添字がchar型の場合に警告を出力
コメント中に「/*」が出現したり、行コメント「//」の行末が「バックスラッシュ + 改行」であるなどした場合に警告
if文内のelse分岐の記述の仕方が原因で混乱する可能性がある場合に警告を出力
ブロック内でステートメントの後に宣言が記述されている場合に警告を出力
float型の値が暗黙のうちにdouble型に昇格した場合に警告を出力
宣言にconst、volatile、 restrict、_Atomicの各指定子が重複している場合に警告
if-elseおよび三項演算子において分岐先の内容が同じである場合に警告を出力
if-else-ifで条件式が重複している場合に警告を出力
if else、または、do while文で本体が空文の場合に警告を出力
異なる列挙型の値の比較について警告
全ての警告をエラーに変換
警告指定子で指定した警告をエラーに変換
-Wallで有効となっていない追加の警告を有効化
最初に発生したエラーでコンパイルを中止
実数値の精度を下げる暗黙の変換に関する警告
浮動小数点数が等式比較で使用されている場合は警告を出力
関数フレームのサイズがオプション引数で指定されたバイト数より大きい場合に警告を出力
関数の戻り値の型にconstなどの型修飾子がある場合に警告を出力
-Wimplicit-intと-Wimplicit-function-declarationを指定した場合と同じ
switch文のcaseラベルでフォールスルーが発生する場合オプション引数で指定した条件で警告を出力
宣言される前の関数が使用された場合に警告を出力
型指定の無い宣言に対して警告を出力
if文の条件式のような真偽値が期待される箇所で、整数値が誤りを疑われるような使われ方をしている場合に警告を出力
変数自身により初期化されている身初期化の変数がある場合に警告を出力
オプション引数で指定されたバイト以上のオブジェクトが定義される毎に警告を出力
比較の左辺オペランドに論理否定が使用されている場合に警告を出力
論理演算子の使用で誤りが疑われる場合警告を出力
long long 型が使用されている場合に警告
main関数の形式に問題がある場合に警告を出力
memset関数で、第1引数が配列の参照、第3引数が配列の要素数であるが配列のバイト長と一致していない場合に警告を出力
memset関数で、第2引数が0ではなく、第3引数が「0」の場合に警告を出力
コードのインデントがブロック構造と一致していない場合に警告を出力
配列の初期化などでブレースによって完全に囲まれていない箇所がある場合に警告を出力
指定したインクルードディレクトリが存在しない場合に警告を出力
if、else、for、switch、whileのブロック内に含まれているように見える安全ではない複数ステートメントのマクロについての警告
関数内でのextern宣言に対して警告を出力
#warning指令が発する警告メッセージの出力を抑制
コンパイル時の整数のゼロ除算について警告しない
ポインタの型修飾子が破棄された場合でも警告しない
配列へのポインタの型修飾子が破棄された場合でも警告しない
#else、#endifの後に続くテキストについて警告しない
-Werrorが有効な場合でも、警告指定子で指定した警告をエラーに変換しない
ヒープ領域に割り当てられていないオブジェクトを解放しようとした場合でも警告しない
互換性の無い型のポインタ間で変換が生じた場合でも警告しない
整数からポインタ、ポインタから整数への互換性の無い変換が生じた場合でも警告しない
異なるサイズの整数のポインタ型へのキャストがあっても警告しない
ポインタ型から異なるサイズの整数型へのキャストがあっても警告しない
関数から戻る際、スコープ外となるローカル変数へのポインタを返しても警告しない
GCCが理解可能な#pragma指令の、誤ったパラメータ、無効な構文などに対しての警告しない
nonnull属性が設定されている関数の引数にnullポインタを渡した場合に警告を出力
nonnull属性が設定されている関数の引数を関数内のnullと比較する場合に警告を出力
宣言中にC標準の廃止された使用法がある場合に警告
古いスタイルの関数定義が使われている場合に警告を出力
真理値が期待される箇所での代入や、演算子が入れ子になるなど優先順位が分かりにくいような特定の式で括弧が省略されている場合に警告を出力
ISOにより定められた言語標準に関する警告を出力
関数型やvoidのsizeof演算に依存する箇所について警告を出力
ポインタがヌル文字定数('\0')と比較された場合に警告を出力
同一スコープ内で宣言が2回以上さているものがある場合に警告を出力
戻り値の型がvoidではない関数で、return文が無い場合などに警告を出力
CおよびC++標準のシーケンスポイント規則に違反しているため、動作結果が未定義となる可能性があるコードに関する警告
-Wshadow=オプション引数(-Wshadow)
宣言されている変数と同じ識別子で、内包されるスコープにおいて変数が宣言された際の隠ぺいの状況により警告を出力
シフト演算の祭に、シフトカウントが負の値の場合に警告を出力
シフト演算の祭に、「シフトカウント>=タイプ幅」に該当する場合は警告を出力
負の値を左シフトした場合に警告を出力
-Wshift-overflow=オプション引数(-Wshift-overflow)
左シフトの演算でオーバーフローが発生した際に警告を出力
符号付きと符号なしの値の比較で、符号付き値が符号なしに変換された際に誤った結果が生じる可能性がある場合に警告
符号付き整数の符号なしへの代入で、符号の変更が生じる可能性のある暗黙の変換が生じる場合に警告
関数定義で配列として宣言された引数にsizeof演算子が使用された場合に警告を出力
ポインタのサイズを要素のサイズで割る、2つのsizeof式の除算に対する誤りを予想する警告
特定の文字列およびメモリ操作の関数の引数がsizeof式を使用して、バイト長の指定などで誤りが疑われる場合に警告を出力
関数のスタック使用量がオプション引数で指定されたバイトよりも大きい可能性がある場合に警告を出力
strcpyなどの文字列操作関数で、コピー先バッファがオーバーフローすると判断された場合に警告を出力
strncpyなどの数的拘束を伴う文字列操作関数で、文字列操作の際に切り捨てなどが発生する場合に警告を出力
switchステートメントの制御式の値が列挙型で、caseラベルに該当する列挙定数が無い場合などに警告を出力
switchステートメントの制御式の値が真理値で、caseラベルが真理値の範囲外である場合に警告を出力
switchステートメントにdefaultラベルが無い場合は警告を出力
switchステートメントの制御式の値が列挙型で、defaultラベルがある場合でも、caseラベルに該当する列挙定数が無い場合などに警告を出力
switchステートメントの制御式と最初のcaseラベルの間に、実行されないステートメントが含まれている場合に警告を出力
自己比較の存在やビット単位比較などの間違いなどで、評価が常にtrueまたはfalseのどちらかになるような場合に警告を出力
旧来のC言語とISO C言語で挙動の異なる特定の構文に関して警告を出力
データ型の範囲が限定されているために比較結果が常に真または偽である場合に警告を出力
#ifで未定義の識別子が評価された場合に警告を出力
変数が初期化されずに使用された場合などに警告を出力
GCCが理解できない#pragma指令が検出された場合に警告を出力
ほぼ全ての-Wunused-...関連のオプションを組み合わせたオプション
関数の引数において、値の代入以外使用されていない場合に警告を出力
ローカル変数において、初期化以外使用されていない場合に警告を出力
-Wunused-const-variable=オプション引数(-Wunused-const-variable)
static const変数が宣言以外の部分で使用されていない場合に警告を出力
static関数が宣言があっても定義されていない場合などに警告を出力
宣言されているラベルが使用されていない場合に警告を出力
関数内でローカルに宣言されたtypedefが使用されていない場合に警告を出力
定義されている未使用のマクロ(インクルードファイル内などの特定のマクロは含まない)に関して警告を出力
関数の引数が宣言以外の部分で使用されていない場合に警告を出力
効果のない(使用されない)結果を計算することとなるステートメントに関して警告を出力
ローカル変数やstatic変数が、宣言のみで使用されていない場合に警告を出力
コード内で可変長配列を使用されている場合に警告を出力
エラーメッセージの最大数を設定
コード上の構文エラーのチェックまでを実行
ISOにより定められた言語標準に関する警告をエラーとして出力
全ての警告メッセージの出力を抑制