1

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

  1. 你同意吗?
  2. 这个问题有没有现成的解决方案?
  3. 你认为这是个好主意吗?

使用 clang 工具可以解决这个问题,但我需要一些帮助来启动这个扩展。

  1. 我应该使用哪个 clang 工具?

此工具/扩展的理论用法:

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

谢谢你的任何建议

编辑:

  1. 我不想在我的文件中存储这个编译指示一次。因此,任何将新内容放入文件的编辑器或任何其他工具都不适用于此问题。

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

4

2 回答 2

1

Just bite the bullet and put the pragma in your header files. It's only one line and if there is nothing, it might confuse others who look at your files.

于 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 回答