2016-04-16 7 views
4

さらに別のものを見ると、question質問者が-Wallでコンパイルしていた回答が私には分かりました。デフォルトで警告のC標準禁止

コンパイラによってデフォルトで-Wallを有効にできない「C標準」に基づく理由はありますか?

私が知っている限り、主要なコンパイラのどれもこれをやっていません(確かに歴史的に誰もそれをしていませんでした)。これが標準への遵守かどうか、互換性など)。他の理由については、おそらくオフトピック(意見に基づく)ですが、私は標準がこの問題をトピック上に(実際に)必要とするかどうかを尋ねると思います。

+0

:そのようなあなたは、「デフォルト」を作りたい場合は、お好みのコンパイラを別名設定できるなど、未使用の変数/関数についての警告 は、一例として、gccのを取るなど、あなたのbashrcに以下を追加規格は "警告"の規範的な概念を持っていません。 –

+4

['gcc'マニュアル](https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Warning-Options.html#Warning-Options)によれば、' -Wall'は ".. ** **いくつかの**ユーザーが疑問を持っていることについてのすべての警告 " - (私の強調)。 – usr2564301

+0

あなたが本当に望むのは、 '-pedantic'と' -std = c11'(あるいはあなたが望むどんな言語でも)です。これにより、コンパイラは実際には不正なものを拒否します。 –

答えて

4

コンパイラによってデフォルトで-Wallを有効にできない「C標準」に基づく理由はありますか?

私はその答えが標準的な理由ではないと思います。コンパイラスイッチの動作は言語標準の範囲外です。

それ以外では、コンパイルエラーであると指定されていないものについては、コンパイラーは(一般的に言えば)診断を生成する必要はないので、そのような診断を「デフォルトで」出力することは無意味です。


これらの一般的な記述は、C言語の場合に適用されます。 N1570附属書Iから引用

5

1実装は多くの場合、この規格の一部として指定され のいずれに警告を生成することができます。

これは、警告はコンパイラにとっては必須ではないことを意味しています。したがって、「C標準」に基づく理由はないと思います。

0

上記の理由に加えて、標準では警告に関する仕様がないため、壁のデフォルトは、実際には随時オンにしたくないという警告があるため多くの人にとって障害になります。言語

alias gcc="gcc -Wall" 
+0

これは説得力がありません。 GCCには警告をオフにするフラグがありますので、決して「つぶれ」てはいけません。デフォルトで警告を有効にする方がはるかに優れています。 –