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