ファイルの終わりに改行がないというGCCの警告を沈黙させるフラグは何ですか?
-
08-07-2019 - |
質問
この投稿を読んだところ、なぜ新しいのか、行の警告は存在しますが、正直なところ、私のチームにはいくつかの異なるプラットフォームといくつかの異なるエディタで作業している人がいます(誰もが最高のスイートを使用しています)ので、警告は遍在しているので、実際には注意する価値のある警告ではありません騒音になり、重大な警告を見つけるのが面倒になります。
何百回も重要な警告が見過ごされてしまったのは、人々が無数の無用な警告が通り過ぎることに慣れてしまったからです。私たちの場合、GCCはオオカミを泣きすぎて誰も真剣に受け取れないと言うことができます。これは悪い態度ですが、人間の性質です。
警告が必要なため、 -Wall
でコンパイルしますが、改行警告を回避するためのカウンターフラグはありますか?
注:マニュアルに少し目を通しましたが、明らかな場所で答えが見つからなかったため、あきらめました。
注:ロバートギャンブルの完全に合理的なソリューションに対応して、コードはクロスプラットフォームであり、Linux、Solaris、およびWindows上に人とビルドがあるため、改行は...コンセンサスの下で。そして、誰かのコンパイラは常に泣き叫ぶつもりです。 40人以上の開発者がおり、プログラマ以外のスタッフもいるからです。
解決
私が知る限り、GCCを何年も使用しています。
更新: C ++ 11標準では警告は発生しません。 関連する質問
他のヒント
何らかのソース管理システムを使用していると仮定すると、テキストファイルが適切な改行で終了することを保証する事前コミットフックを追加できます。さらに、使用するソース管理システムに応じて、行末が存在しない場合に実際に修正する事前コミットフックを追加できます。
ファイルに想定されているように、ファイルの終了改行を確認するだけではどうですか?これは、問題のあるエディターでの単純な構成変更である必要があり、「沈黙」する非常に簡単な方法のようです。警告。
-Wno-eof-newline
これは、 gccバグ14331 の修正で追加されました。 p>
奇妙なことに、gccに改行の欠落に関する警告を出力させることはできません。新しいバージョンでは、この警告は完全に不要になったと思います。
gccに -Wno-eof-newline
を受け入れさせることはできますが、 -Weof-newline
を試そうとするとフラグが認識されないことを訴えます。 C ++ 11は、ファイルの最後の改行の要件を削除しましたが、古い標準で移植可能なコードを記述するために、そのようなペダンティックな警告を有効にすることが本当に可能であるはずです。
幸いなことに、clangはまだ改行の欠落に関する診断を正しくサポートしています。この警告は、すべてのモードで -Wnewline-eof
で有効にできます。C++ 11以降のモードでは、 -Wc ++ 98-compat-pedantic
。
これらの警告はデフォルトではオフになっていますが、clangの -Weverything
フラグを利用して警告を制御するための「減算」戦略を有効にしている場合、C ++ 11以降のモードでは警告を無効にするには、 -Wno-newline-eof
と -Wno-c ++ 98-compat-pedantic
の両方が必要です。
これをオフにするための反論がないことは90%確信しています。
警告の理由は、コンパイル時にエンドラインのないファイルが未定義の動作をすることです:
標準を参照: http://c0x.coding-guidelines.com/5.1.1.2.html
これは、この問題でソースファイルを修正するという、私が試したことのないpythonコードを含むブログ投稿です。
ソース管理にフックを追加します。これにより、改行が追加されるまでコードチェックインが成功しませんか?