自动将#pragma一次添加到头文件

时间:2013-09-25 16:56:17

标签: c++ clang pragma boilerplate

我尝试从我的个人项目中删除所有不必要的样板代码。我注意到,第一件事是每个头文件#pragma一次的第一行。不那么令人惊讶。 但是,我想问我的编译器(clang SVN HEAD版本)自动将此行添加到我的头文件中(例如,使用如下模式:src / * .hpp)。我认为在您真正想要多次包含一个标题的情况下非常罕见。

  1. 你同意吗?
  2. 这个问题是否有现成的解决方案?
  3. 你认为这是个好主意吗?
  4. 使用clang工具可以解决这个问题,但我需要一些帮助才能启动此扩展。

    1. 我应该使用哪种铿锵工具?
    2. 此工具/扩展程序的理论用法:

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

      感谢您的任何建议

      编辑:

      1. 我不想在我的文件中存储一次这个pragma。因此,任何在文件中放置新内容的编辑器或任何其他工具都无法解决此问题。

      2. 本主题是关于头文件的一次性包含,而不是pragma一次。

2 个答案:

答案 0 :(得分:1)

只需咬紧牙关,将pragma放在头文件中。它只有一行,如果没有,它可能会让看到你文件的其他人感到困惑。

答案 1 :(得分: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一次。