【发布时间】:2018-01-10 16:01:11
【问题描述】:
我在为我的源文件查找主要包含时遇到问题。但是一步一步来。
文件 z.h
#include "test"
#include "azd"
#include <vector>
#include <boost/something>
#include <map>
文件 z.C
#include "test"
#include "azd"
#include <vector>
#include <boost/something>
#include <map>
#include "z.h"
文件(部分).clang-format 与 z.h 和 z.C 一起定位
BasedOnStyle: LLVM
Language: Cpp
IncludeIsMainRegex: '(_test)?$'
IncludeCategories:
- Regex: '^(<boost)'
Priority: 3
- Regex: '^<'
Priority: 4
- Regex: '.*'
Priority: 1
现在,测试:
$ clang-format z.h
#include "azd"
#include "test"
#include <boost/something>
#include <map>
#include <vector>
在这里,一切看起来都很棒,包括按预期排序,但是
$ clang-format z.C
#include "azd"
#include "test"
#include "z.h"
#include <boost/something>
#include <map>
#include <vector>
这里,“a.z”在中间,虽然它应该被 '(_test)?$' 检测为主要包含。有趣的是,当我重命名 z.C -> z.cc 然后:
$ clang-format z.cc
#include "z.h"
#include "azd"
#include "test"
#include <boost/something>
#include <map>
#include <vector>
工作正常...
clang-format 似乎无法将 *.C 文件识别为 C++ 语言。我正在处理 C++ 项目,我没有奢侈地将所有 *.C 文件重命名为 *.cc,所以请有人告诉我如何强制 clang-format 对 *.C 文件使用 C++ 样式格式吗? 或者通过另一种方法找到主要包含来解决这个问题?
第二个问题/问题。 我们有时将模板声明和定义拆分为 template.h 和 templateImpl.h 文件。如何强制 clang-format 将 templateImpl.h 视为源并将 #include "template.h" 作为主要包含?
问候
【问题讨论】:
标签: c++ include clang-format