84

-Wall 以外に、人々が有用だと感じた警告は他にありませんか?

http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html

4

15 に答える 15

48

私は日常的に使用します:

    gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \
        -Wstrict-prototypes -Wmissing-prototypes

このセットは、これに慣れていない人(私が初めてこれらのフラグを使用してコードをコンパイルする人)に多くのことをキャッチします。それが私に問題を与えることはめったにありません(ただし、-Wcast-qualは時々厄介です)。

于 2008-09-30T20:20:45.677 に答える
45

2011 年 9 月 1 日現在、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 -float-store -fno-common -fstrict-aliasing \
    -lm

「リリース」エイリアス

gcc -std=c89 -pedantic -O3 -DNDEBUG -flto -lm

2009 年 11 月 3 日現在

「開発」別名

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 -float-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
于 2009-11-03T12:43:30.257 に答える
17

私はC++から始めたので、CIの学習に切り替えたときは、肛門外であることを確認しました。

-fmessage-length = 0
-ansi -pedantic -std = c99
-エラー
-壁
-Wextra
-Wwrite-strings
-Winit-self
-Wcast-align
-Wcast-qual
-Wpointer-算術
-Wstrict-エイリアシング
-Wformat = 2
-欠落-宣言
-Wmissing-include-dirs
-Wno-unused-parameter
-初期化されていません
-Wold-style-definition
-Wstrict-プロトタイプ
-欠落-プロトタイプ
于 2009-01-06T02:05:46.020 に答える
15

-Werror が好きです。コードの警告を無料に保ちます。

于 2008-09-30T19:47:48.623 に答える
10

使用している GCC バージョンのマニュアルを入手し、利用可能なすべての警告オプションを見つけてから、やむを得ない理由があるものだけを無効にします。(たとえば、そうでなければ多くの警告を表示する変更不可能なサードパーティのヘッダー。)これらの理由を文書化します。(Makefile またはこれらのオプションを設定する場所。) 定期的に設定を確認し、コンパイラをアップグレードするたびに確認します。

コンパイラはあなたの友達です。警告はあなたの友達です。コンパイラーが潜在的な問題を知らせる機会をできる限り与えてください。

于 2009-11-03T12:35:49.407 に答える
5

私も使用します:

-Wstrict-overflow=5

整数のオーバーフロー動作に依存するコードを記述した場合に発生する可能性のある厄介なバグをキャッチするため。

と:

-ウェクストラ

これにより、あると便利ないくつかのオプションも有効になります。ただし、ほとんどは C++ 用です。

于 2008-09-30T19:49:34.113 に答える
2

今私は使用します:

-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror

私はそのリストのほとんどを「An Introduction to gcc」という本から、いくつかは防御的プログラミングに関するUlrich Drepperの推奨事項 ( http://people.redhat.com/drepper/Defensive-slides.pdf ) から引用しました。

しかし、リストの背後に科学はありません。ただ、良いリストのように感じました.

/ヨハン


注:私はそれらのペダンティックなフラグが好きではありません....

注: -W と -Wextra はほぼ同じものだと思います。

于 2009-03-21T13:07:31.853 に答える
2

-pedantic -Wall -Wextra -Wno-write-strings -Wno-unused-parameter

「私をたくさん傷つける」モードでは、-Wno... を省略します。

特に C++ では、コードの警告を無料にしたいと思っています。多くの場合、C コンパイラの警告は無視できますが、多くの C++ 警告はソース コードの根本的な欠陥を示しています。

于 2008-09-30T20:26:31.323 に答える
2

私は通常、「-W -Wall -ansi -pedantic」でコンパイルします。これにより、コードの品質と移植性を最大限に高めることができます。

于 2008-09-30T19:44:12.847 に答える
1

-Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wextra -Werror-implicit-function-declaration -Wunused -Wno-unused-value -Wreturn-type

于 2008-10-01T16:35:32.433 に答える
1

-Wfloat-equal、-Wshadow、-Wmissing-prototypes、

于 2008-09-30T20:30:40.970 に答える
1

私は一般的にちょうど使用します

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
于 2009-08-20T20:23:48.997 に答える
1

-ペダンティックエラー

于 2008-09-30T19:43:49.010 に答える
1

を指定しない限り、初期化されていない変数に関する警告は機能しない-Oため、それをリストに含めます。

-g -O -Wall -Werror -Wextra -pedantic -std=c99
于 2009-11-03T12:28:28.623 に答える
0

-Wfatal-errors

于 2009-07-17T20:41:59.547 に答える