包含具有clang格式

时间:2018-06-10 20:55:21

标签: c++ clang-format

clang-format有IncludeIsMainRegex来确定几个文件是否共享相同的主标题,以便首先放置此#include指令。够整洁。

我几乎总是使用这种风格的前向声明标题:" entity_fwd.hpp"," entity.hpp"和" entity.cpp"。另外还有一个" entity_test.cpp",它应该使用" entity.hpp"头。 " entity.hpp"但是,应该使用" entity_fwd.hpp"作为主标题

所以,我真正需要的是一种将其他标题指定为 main 的方法,而不是使用相同主标题的其他源文件。

有没有人找到一种方法让clang-format做到这一点?

修改 好的,所以多一点上下文。假设我有这个名为entity_fwd.hpp的标题:

class Entity;
class Player;
class MOB;

bool collisionTest(Entity const & e1, Entity const & e2);

然后我有一个正常的定义标题entity.hpp

#include "entity_fwd.hpp"
#include "world.hpp"
#include <vector>

class Entity {
public:
    Entity(Entity const &) = delete;
    virtual bool isAlive() const;
    ...
};

...

最后是一个实施文件entity.cpp

#include "entity.hpp"

bool collisionTest(Entity const & e1, Entity const & e2) {
    ...
}

bool Entity::isAlive() const {
    ...
}

...

对于entity.cpp clang-format 知道 entity.hpp是该文件的主标题,基于标题的主干&#39 ; s文件名;术语主标题是clang格式的术语。 主标题将首先放在包含列表中。

对于entity.hpp主标题应为entity_fwd.hpp。我可以使用IncludeCategories与正则表达式'_fwd.h(pp)?"$'entity_fwd.hpp进行排序,但这样会首先放置所有 _fwd标题,其中只有{{1}应该得到特殊待遇。

1 个答案:

答案 0 :(得分:1)

LSOpenURLsWithRole() failed with error -10810 for the file /Users/gb/myapp/dist/MyApplication.app. 的最新documentation显示一个新样式选项clang-format,这似乎是您所需要的。该版本不在10.0.0中,因此您需要找到一个比该版本更新的IncludeIsMainSourceRegex版本。