保留特定预处理器包含clang格式的块的缩进

时间:2018-10-02 05:58:05

标签: clang-format

我们拥有的机制可以在包含外部库时保护某些定义,我们希望在格式化代码时将它们保持原样,最终按字母顺序对块的内容进行排序。

例如:

#include <ExternalIncludeBegin.h>
#    include <somelib/someheader.h>
#    include <somelib/anotherheader.h>
#include <ExternalIncludeEnd.h>

现在,clang格式将这个块转换为

#include <ExternalIncludeBegin.h>
#include <somelib/someheader.h>
#include <somelib/anotherheader.h>
#include <ExternalIncludeEnd.h>

但是我想保留原始缩进,如果可能的话,不必用新代码封装所有内容(我们要格式化的代码库相当老而又庞大),那么这里的clang格式可以为我做些什么吗?

1 个答案:

答案 0 :(得分:0)

看看“禁用格式”功能

Disabling Formatting on a Piece of Code
Clang-format understands also special comments that switch formatting in a delimited range. The code between a comment // clang-format off or /* clang-format off */ up to a comment // clang-format on or /* clang-format on */ will not be formatted. The comments themselves will be formatted (aligned) normally.

int formatted_code;
// clang-format off
    void    unformatted_code  ;
// clang-format on
void formatted_code_again;

更多详细信息:https://clang.llvm.org/docs/ClangFormatStyleOptions.html

因此,您还可以使用“ sed”或其他工具在整个项目中注入特定于clang的注释。