は警告Iで、C++コードにはgccを実行している場合、ウェブ上のそこの人々の多くは、以下を参照してください。gccのオプション "-Wstrict-prototypes"がC++に有効でないのはなぜですか?
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
警告テキストは非常に明確であるが、「C++」[セットにエイダではありません/ C/ObjC]、なぜ私はgccがC++コードをコンパイルするときにこの警告を出すのかについて全く疑問がない。 (このフラグがオンになっているのは、Cコードが主にCコードであるにもかかわらず、警告オプションリストが厳密に選択されているからですが、C++コードが少し追加されています)
私の質問は:なぜこの警告は、警告オプションのC++
gccのドキュメントには有効ではありませんhttp://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.htmlから、次のとおりです。
-Wstrict-プロトタイプ(CのみのObjective-C )引数型を指定せずに関数を宣言または定義した場合に警告する( 旧式の関数定義は、 引数の型を指定する宣言が先行。)
今、私はちょうどを知っている私は、C++について何かを明らかに忘れてんだけど、C++はまた、プロトタイプでの関数の引数の型を指定する必要はないのですか?関数がしばしばメンバ関数であるが、それにもかかわらずプロトタイプではないので、これらの関数プロトタイプはしばしばクラス宣言に含まれていますか?あるいは、それらが単なる良い練習であっても、なぜgccはこのオプションでサポートを提供しないのでしょうか?またはそうでない場合は、C++の並列オプションによって?
私はC++コードの要件に違反した場合、コンパイラは_error_を正しく報告し、コンパイルに失敗するので、_warning_はC++では余分です。 – talkaboutquality
はい、あなたが言及した理由のために、プロトタイプの欠落に関する警告はC++では不必要です。私の意見では、C++で使用される '-Wstrict-prototypes'のGCCの警告は余分です。 gccは黙ってC++のオプションを無視することができます。 –