-oは出力ファイル名を変更します(--helpを使用していることがわかりました)
しかし、_-Wall
は?
これは「すべてに警告」の略です。g++が通知できるすべての警告を(ほぼ)オンにします。これらの警告を理解して修正すると、コード内のさまざまな種類の問題を修正できるので、一般的には、特に初心者の場合は良い考えです。
Man gccを参照してください。
-Wallはこれらの警告をオンにします:
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts
-Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and
Objective-C only) -Wimplicit-function-declaration (C and Objective-C only)
-Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding)
-Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing
-Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas
-Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
-Wextraに含まれるもの:
-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init
-Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused
or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)
明示的に有効にする必要がある警告はさらに多くあります。
例えば。 Cコードには次を使用します。
-Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wdisabled-optimization -Wdiv-by-zero -Wendif-labels -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wjump-misses-init -Wlogical-op -Werror = missing-braces -Wmissing-declarations -Wno-missing-format-attribute -Wmissing-include-dirs -Wmultichar -Wpacked -Wpointer-arith -Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing -Wstrict-aliasing = 2 -Wswitch -Wswitch-default -Werror = undef -Wno-unused -Wvariadic-macros -Wwrite-strings -Wc ++ -compat -Werror = declaration-after-statement -Werror = implicit-function-declaration -Wmissing-prototypes -Werror = nested-externs -Werror = old-style-definition -Werror = strict-prototypes
または https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html を使用した一連の警告
残念なことに、マニュアルの実際に関連する部分を引用している回答はありません。
これにより、一部のユーザーが疑わしいと考える構成に関するすべての警告が有効になり、マクロと併用しても、簡単に回避(または警告を防止するために変更)できます。
[...]
一部の警告フラグは、
-Wall
によって暗示されないことに注意してください。それらのいくつかは、ユーザーが一般的に疑わしいとは思わない構造について警告しますが、時々チェックすることを望むかもしれません。また、場合によっては回避が必要または困難な構造について警告するものもあり、コードを変更して警告を抑制する簡単な方法はありません。それらの一部は-Wextra
によって有効になりますが、それらの多くは個別に有効にする必要があります。
エルゴ:
-Wall
はnotは「すべての警告」を意味します。肝心なのは、設定する必要がある警告の絶対最小値についてです。 -Wall -Wextra
の方が優れていますが、コンパイラが実行できるすべてのエラーチェックをまだ使用しているわけではありません。
個人的には-Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
未満にはなりません。私の現在のプロジェクトはすべて、実際にはそれよりも長い警告のリストを使用しています(それらをトリガーすることはありません)。また、新しいオプションについては、メジャーリリースごとにマニュアルを確認します。コンパイラはあなたの友達です。提供できる診断を使用してください。
Gccライターがソースで簡単に回避できると思われる警告およびを有効にします。 -W(新しいリリースでは-Wextra)もありますが、これは有用であると考えられますが、回避策の誤検知が困難であるか、コードが不器用になる可能性があります。
gccには他にも多くの警告がありますが、通常はあまり有用ではありません。 http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options を参照してください
それはenables most warning messages
。
g++ --help=warnings
を使用すると、詳細を確認できます。
すべての警告が有効になります。 (「すべて警告」と読みます)