-oは出力ファイル名を変更します(--helpを使用していることがわかりました)
しかし、私は何をするのか分かり-Wall
ませんか?
-oは出力ファイル名を変更します(--helpを使用していることがわかりました)
しかし、私は何をするのか分かり-Wall
ませんか?
man
スイッチの機能や使用可能なスイッチを知りたい場合は、プログラムのエントリを読んでみてください。のman
ページはlinux.die.net/man/1/gccgcc
で読むことができます-そこでテキスト「-Wall」をすばやく検索できます
回答:
これは「すべて警告」の略で、g ++が通知できる(ほぼ)すべての警告をオンにします。これらの警告を理解して修正すると、コード内のさまざまな種類の問題を修正するのに役立つため、通常、特に初心者の場合は良い考えです。
-Wextra
と-pedantic
。
-Wall -Wextra
、その後、マニュアル閲覧数だけ見つけるために、より多くさえあるため、あなたは可能性として有効でした警告-Wextra
...小さなサブセットのみである
-Wunreachable-code
しばらく前に無効にしていなかったとしたら、Appleは最近ずっと幸せになるでしょう。;-)
mangccを参照してください。
-壁はこれらの警告をオンにします:
-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 = description-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
「すべての警告」を意味するものではありません。要するに、それはあなたが設定すべき警告の絶対最小値についてです。一方で-Wall -Wextra
優れている、それはまだあなたのために何ができるあなたのコンパイラエラーチェックのすべてを利用していません。
個人的に私は未満に行くことはありません-Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
。私の現在のすべてのプロジェクトは、実際にはそれよりも長い警告のリストを使用しています(それらのいずれもトリガーしません)。また、すべてのメジャーリリースのマニュアルで新しいオプションを確認しています。コンパイラはあなたの友達です。それがあなたに提供できるどんな診断でも使ってください。
-Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
でいるg++ -std=c++11
間、私がコンパイルしている間、あなたを使うことを私に勧めますか?または、この部分をスキップして、後でエラーメッセージフラグの使用を開始する必要がありますか?もしそうなら、いつエラーメッセージから始めるべきですか?
これにより、gccライターがソースで有用かつ回避しやすいと見なされる警告が可能になります。-W(新しいリリースでは-Wextra)もあります。これらは有用と見なされますが、誤検知の回避が困難であるか、コードが不器用になる可能性があります。
gccには他にもたくさんの警告がありますが、一般的にはあまり役に立ちません。http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Optionsを参照してください
すべての警告が表示されます。-pedantic
コードの一部の不適合部分について警告するためにも使用することをお勧めします。