C で役立つ GCC フラグは何ですか? 質問する

C で役立つ GCC フラグは何ですか? 質問する

設定を超えて-Wall、設定-std=XXXC で使用するために、他に本当に便利だがあまり知られていないコンパイラ フラグは何でしょうか?

私は、追加の警告や、場合によっては警告をエラーに変えて、偶発的な型の不一致を最小限に抑えることに特に興味があります。

ベストアンサー1

これが私のものです:

  • -Wextraそして-Wall: 不可欠。
  • -Wfloat-equal: 通常、浮動小数点数の等価性をテストするのは良くないので便利です。
  • -Wundef: ディレクティブ内で初期化されていない識別子が評価された場合に警告します#if
  • -Wshadow: ローカル変数が別のローカル変数、パラメーター、またはグローバル変数をシャドウする場合、または組み込み関数がシャドウされる場合は常に警告します。
  • -Wpointer-arith: 関数または のサイズに依存するものがある場合に警告しますvoid
  • -Wcast-align: ポインターがキャストされ、ターゲットの必要なアラインメントが増加する場合は常に警告します。たとえば、整数に 2 バイトまたは 4 バイトの境界でのみアクセスできるマシンでa がchar *an にキャストされた場合は警告します。int *
  • -Wstrict-prototypes: 引数の型を指定せずに関数が宣言または定義された場合に警告します。
  • -Wstrict-overflow=5: コンパイラが符号付きオーバーフローが発生しないという仮定に基づいて最適化を行う場合に警告します。(値 5 は厳しすぎる可能性があります。マニュアル ページを参照してください。)
  • -Wwrite-strings: 文字列定数に型を与えるconst char[長さ]そのため、ポインタのアドレスを非const char *ポインタにコピーすると警告が表示されます。
  • -Waggregate-return: 構造体または共用体を返す関数が定義または呼び出される場合に警告します。
  • -Wcast-qual: ポインタがキャストされてターゲット型から型修飾子が削除されるたびに警告します*
  • -Wswitch-default:文にcase *switchがない場合は常に警告します。default
  • -Wswitch-enum:switchステートメントに列挙型のインデックスがあり、caseその列挙の 1 つ以上の名前付きコードにが欠けている場合は常に警告します*
  • -Wconversion: 値を変更する可能性のある暗黙的な変換について警告します*
  • -Wunreachable-code: コンパイラがコードが実行されないことを検出した場合に警告します*

*マークが付いているものは、誤った警告が多すぎる場合があるので、必要に応じて使用します。

おすすめ記事