-Wall以外に、人々が有用だと思った他の警告は何ですか?
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
私は定期的に使用します:
gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-Wstrict-prototypes -Wmissing-prototypes
このセットは、使用していない人(これらのフラグを使用して初めてコードをコンパイルする人)にとって非常に役立ちます。それはめったに問題を与えません(-Wcast-qualは時々迷惑です)。
2011-09-01現在、gccバージョン4.6.1
私の現在の「開発」エイリアス
gcc -std = c89 -pedantic -Wall\ -Wno-missing-braces -Wextra -Wno-missing-field-initializers -Wformat = 2\ -Wswitch-default -Wswitch-enum -Wcast-align -Wpointer-arith\ -Wbad-function-cast -Wstrict-overflow = 5 -Wstrict-prototypes -Winline\ -Wundef -Wnested-externs -Wcast -qual -Wshadow -Wunreachable-code\ -Wlogical-op -Wfloat-equal -Wstrict-aliasing = 2 -Wredundant-decls\ -Wold-style-definition -Werror\ -ggdb3\ -O0\ -fno-omit-frame-pointer -ffloat-store -fno-common -fstrict-aliasing\ -lm
「リリース」エイリアス
gcc -std = c89 -pedantic -O3 -DNDEBUG -flto -lm
2009-11-03現在
「開発」エイリアス
gcc -Wall -Wextra -Wformat = 2 -Wswitch-default -Wcast-align -Wpointer-arith\ -Wbad-function-cast -Wstrict-prototypes -Winline -Wundef -Wnested-externs\ -Wcast-qual -Wshadow -Wwrite-strings -Wconversion -Wunreachable-code\ -Wstrict-aliasing = 2 -ffloat-store -fno-common -fstrict-aliasing\ -lm -std = c89 -pedantic -O0 -ggdb3 -pg --coverage
「リリース」エイリアス
gcc -lm -std = c89 -pedantic -O3 -DNDEBUG --combine -fwhole-program -funroll-loops
-Werrorが好きです。コードの警告を無料にします。
私はC++で始めたので、Cを学習するように切り替えたとき、私は必ず特別なことをしました。
-fmessage-length = 0 -ansi -pedantic -std = c99 -Werror -Wall -Wextra -Wwrite-strings -Winit-self -Wcast-align -Wcast-qual -Wpointer-arith -Wstrict-aliasing -Wformat = 2 -Wmissing-declarations -Wmissing-include-dirs -Wno-unused-parameter -Wuninitialized -Wold-style-definition -Wstrict-prototypes -Wmissing-prototypes
使用しているGCCバージョンのマニュアルを入手し、すべての警告オプションが利用可能を見つけてから、のみ有力なを無効にしますそうする理由。 (たとえば、さもなければ多くの警告を与える変更不可能なサードパーティのヘッダー。)それらの理由を文書化します。(Makefileまたはどこでもこれらのオプションを設定します。)設定を定期的な間隔およびコンパイラをアップグレードするたびに確認します。
コンパイラはあなたの友達です。警告はあなたの友達です。潜在的な問題をできる限り伝える機会をコンパイラに与えます。
私も使用します:
-Wstrict-overflow = 5
整数のオーバーフロー動作に依存するコードを記述した場合に発生するmayという厄介なバグをキャッチします。
そして:
-ウェクストラ
これにより、ニースの一部のオプションも有効になります。ただし、ほとんどはC++用です。
-pedantic -Wall -Wextra -Wno-write-strings -Wno-unused-parameter
「たくさん痛い」モードでは、-Wno ...
特にC++では、コードの警告を無料で送信するのが好きです。 Cコンパイラの警告はしばしば無視できますが、多くのC++警告はソースコードに根本的な欠陥を示しています。
通常、「-W -Wall -ansi -pedantic」でコンパイルします。これにより、コードの品質と移植性を最大限に高めることができます。
-pedantic-errors
-Wfloat-equal、-Wshadow、-Wmissing-prototypes、
-Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wextra -Werror-implicit-function-declaration -Wunused -Wno-unused-value -Wreturn-type
今私は使用しています:
-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror
私はそのリストを主に「An Introduction to gcc」という本から取り、次に一部を lrich Drepper Defensive Programmingに関する推奨事項(- http://people.redhat.com/drepper/Defensive- slides.pdf )。
しかし、私は私のリストの背後にある科学を持っていません、それはちょうど良いリストのように感じました。
/ヨハン
注:私はそれらの退屈なフラグが好きではありませんが....
注:-Wと-Wextraはほぼ同じものだと思います。
私は一般的に使用します
gcc -Wall -W -Wunused-parameter -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wsign-compare -Wconversion -Wshadow -Wcast-align -Wparentheses -Wsequence-point -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wnested-externs -Wredundant-decls -Werror -Wdisabled-optimization -pedantic -funit-at-a-time -o
初期化されていない変数に関する警告は、-O
を指定しないと機能しません。そのため、リストに追加します。
-g -O -Wall -Werror -Wextra -pedantic -std=c99
-Wfatal-errors