6

改行警告が存在する理由についてのこの投稿を読んだところですが、正直なところ、私のチームにはいくつかの異なるプラットフォームといくつかの異なるエディターで作業している人々がいます (誰もが自分に最適なものを使用しています)。対処する価値のある警告ではなく、ノイズになり、深刻な警告を見つけるのが面倒になります。

多くの場合、重要な警告が見過ごされてきました。なぜなら、人々は無数の無用な警告を通り過ぎることに慣れてしまったため、明らかに注意深くそれらを見るのをやめてしまったからです。私たちの場合、GCC はオオカミを叫びすぎて誰も真剣に受け止められなくなっていると言えます。これは悪い態度ですが、それは人間の本性です。

警告が必要なため、現在は でコンパイルして-Wallいますが、改行警告を回避するためのカウンター フラグはありますか?

注:マニュアルを少し調べましたが、どこにも答えが明白に見つからなかったので、あきらめました。

注: Robert Gamble の完全に合理的な解決策に応えて、私たちのコードはクロスプラットフォームであり、Linux、Solaris、および Windows で人員とビルドを行っているため、改行... は合意に達していません。そして誰かのコンパイラはいつも泣き虫になる。40 人以上の開発者がいて、プログラマー以外のスタッフもいるからです。

4

6 に答える 6

6

ある種のソース管理システムを使用していると仮定すると、テキスト ファイルが適切な改行で終了することを保証する pre-commit フックを追加できます。さらに、使用するソース管理システムによっては、存在しない場合に行末を実際に修正する pre-commit フックを追加できます。

于 2008-11-12T03:27:45.107 に答える
5

私が知る限り、GCC は何年も使用してきました。

更新: C++11 標準で警告が発生することはありません。関連Q

于 2008-11-12T03:08:55.893 に答える
4
-Wno-eof-newline

これは、gcc バグ 14331の修正で追加されました。


奇妙なことに、改行がないという警告を gcc に実際に出力させることはできません。新しいバージョンでは、この警告が完全に省略されていると思います。

gcc に受け入れさせることはできます-Wno-eof-newlineが、試してみると認識されないフラグが表示され-Weof-newlineます。C++11 では、ファイルの末尾にある改行の要件が削除されましたが、古い標準で移植可能なコードを記述するために、そのようなペダンティックな警告を有効にすることが実際に可能であるはずです。


幸いなことに、clang は改行の欠落に関する診断を正しくサポートしています。この警告は-Wnewline-eof、すべてのモードで有効にすることができます。また、C++11 以降のモードでは、-Wc++98-compat-pedantic.

これらの警告はデフォルトでオフになっていますが、clang のフラグを利用して警告を制御するための「減法」戦略を有効にしている場合、C++11 以降のモードでは警告を無効にするためにとの-Weverything両方が必要です。-Wno-newline-eof-Wno-c++98-compat-pedantic

于 2014-02-18T20:01:30.337 に答える
4

ファイルが想定されているように、ファイルに終了改行があることを確認してみませんか? これは、問題のあるエディターの簡単な構成変更であり、警告を「黙らせる」非常に簡単な方法のようです。

于 2008-11-12T02:56:38.617 に答える
0

改行が追加されるまでコード チェックインを成功させないフックをソース管理に追加しますか?

于 2008-11-12T04:01:50.747 に答える
0

私は、これをオフにする議論がないことを 90% 確信しています。

警告の理由は、エンドラインのないファイルはコンパイル時に未定義の動作をするためです:

標準を参照してください: http://c0x.coding-guidelines.com/5.1.1.2.html

これは、この問題でソースファイルを修正すると言っているいくつかのpythonコード(私は試していません)を含むブログ投稿です。

http://www.johndcook.com/blog/tag/gcc/

于 2008-11-12T03:00:59.263 に答える