25

GCC をできるだけ厳密にするには、どの GCC オプションを設定する必要がありますか? (できるだけ厳密に言います) 私は C89 で書いていて、コードを ANSI/ISO に準拠させたいと思っています。

4

2 に答える 2

24

私は使用することをお勧めします:

-Wall -Wextra -std=c89 -pedantic -Wmissing-prototypes -Wstrict-prototypes \
    -Wold-style-definition

でコンパイルする必要があります。-Oまた-g、一部の警告は、オプティマイザーが使用されている場合にのみ使用できます(実際、私は通常-O3、問題を特定するために使用します)。-std=gnu89ライブラリ内の拡張機能を無効にすることをお勧めします。OTOH、厳密なANSI C89にコーディングしている場合は、それらを無効にする必要があります。この-ansiオプションは同等です-std=c89が、明示的または柔軟ではありません。

欠落しているプロトタイプは、スコープ内にプロトタイプなしで使用されている(または定義されている外部関数)関数について警告します。厳密なプロトタイプは、関数の宣言または定義(または関数ポインター)に「空の括弧」を使用できないことを意味します。(void)または正しい引数リストが必要です。古いスタイル定義は、次のようなK&Rスタイル関数の定義を示しています。

int old_style(a, b) int a; double b; { ... }

運が良ければ、それについて心配する必要はありません。私は仕事でそれほど幸運ではなく、周りにずさんな関数ポインターが多すぎるので、厳密なプロトタイプを使用することはできません。

参照:コードをクリーンアップするための最良のコマンドラインツールは何ですか

于 2012-01-20T19:35:28.763 に答える