clang-format:禁用宏的格式?

bla*_*all 10 c++ clang-format

我使用 clang-format 作为我的代码库的自动格式化工具。但它的一些功能让我很烦恼。

例如,我不希望它格式化我的宏定义,因为在大多数情况下,手动格式化它们更清晰。但我不知道如何以 clang 格式禁用它。

另一个小问题是指针对齐。有时,很明显让它左对齐,有时是右对齐。所以我宁愿自己动手。但是从 clang-format 中禁用它似乎是不可能的?

对这些问题有什么帮助吗?

Dmi*_*lov 7

您可以将宏包装在

// clang-format off
#define ... \
   ...
// clang-format on
Run Code Online (Sandbox Code Playgroud)

要避免手动编辑每个文件,您可以使用正则表达式

search: ^([ \t]*#[ \t]*define[ \t]+.+?\\\r?\n(?:.*?\\\r?\n)*.*?\r?\n)

replace: // clang-format off\r\n$1// clang-format on\r\n
Run Code Online (Sandbox Code Playgroud)

例如,在记事本+ +,Ctrl+ Shift+ F- “查找文件- ‘在文件中替换’。

迄今为止(直到 v11)还没有办法禁用指针对齐。您可以设置样式或派生样式(clang-format将分析文件以查找最常见的对齐方式&*使用它)。