1

私は自分の個人的なプロジェクトから不要なボイラープレート コードをすべて削除しようとしています。最初に気付いたのは、すべてのヘッダー ファイル #pragma once の最初の行です。それほど驚くべきことではありません。ただし、コンパイラ (clang SVN HEAD バージョン) にこの行をヘッダー ファイルに自動的に追加するように依頼したいと思います (たとえば、src/*.hpp のようなパターンを使用)。実際に 1 つのヘッダーを複数回インクルードしたい場合は非常にまれだと思います。

  1. 同意しますか?
  2. この問題に対する既存の解​​決策はありますか?
  3. これは良い考えだと思いますか?

clang ツールを使用すると、この問題を解決できますが、この拡張機能を開始するには少し助けが必要です。

  1. どのclangツールを使用すればよいですか?

このツール/拡張機能の理論上の使用法:

clang --auto-pragma-once src/*.hpp src/*.cpp -o test

アドバイスありがとうございます

編集:

  1. このプラグマを一度ファイルに保存したくありません。そのため、ファイルに新しいものを配置するエディターやその他のツールは、この問題では機能しません。

  2. このトピックは、プラグマ ワンスではなく、ヘッダー ファイルの 1 回限りのインクルードに関するものです。

4

2 に答える 2

1

弾丸を噛んで、ヘッダーファイルにプラグマを入れてください。これは 1 行だけであり、何もない場合、ファイルを見る他のユーザーを混乱させる可能性があります。

于 2013-09-25T16:58:14.087 に答える
0

これにclangを使用する理由がわかりません。エディターにもよりますが、私が知っているすべてのエディターでは、特定のパターンに一致する名前の新しいファイルを開くなどのトリガーが可能で、ボイラープレートを挿入できます。業界では、著作権表示が挿入される方法であるため、これを使用しないことはほとんど禁止されています。たとえば、私の場合、xyz.hh という名前の新しいファイルを作成すると、エディターは次のように表示されます。

/****************************************************************************/
/*      File:       xyz.hh                                                  */
/*      Author:     J. Kanze                                                */
/*      Date:       25/09/2013                                              */
/*      Copyright ....                                                      */
/* ------------------------------------------------------------------------ */

#ifndef xyz_hh_20130925QPIvFK6xMJYLBhSpv58ROPOU
#define xyz_hh_20130925QPIvFK6xMJYLBhSpv58ROPOU

#endif
//  Local Variables:                        --- for emacs
//  mode: c++                               --- for emacs
//  tab-width: 8                            --- for emacs
//  End:                                    --- for emacs
//  vim: set ts=8 sw=4 et filetype=cpp:     --- for vim  

私の仕事のドメインでこれを行うと、著作権表示が異なり、インクルード ガードが異なる標準に従っており、#pragma once もあります。

于 2013-09-25T17:04:42.620 に答える