如何配置clang-format对齐连续特殊构造函数与赋值运算符的delete语句
解决方案
配置不生效原因是:clang-format 默认将构造函数、运算符重载的= delete归类为函数声明绑定的特殊语句,仅开启AlignConsecutiveAssignments不会覆盖这类场景,需要配合额外配置项实现对齐效果:
方案1:配置.clang-format参数(适配clang-format 12及以上版本)
在你的配置文件中添加如下规则即可:
AlignConsecutiveAssignments: Enabled: true AlignFunctionDeclarations: true # 核心配置,允许对齐函数声明中的赋值语句(含= delete、= default场景) AcrossEmptyLines: false AcrossComments: false AlignConsecutiveDeclarations: true BreakBeforeAssignmentOperators: false
配置后执行格式化即可自动实现需要的对齐效果,该规则同时也会对类内其他= default的特殊成员函数生效。
方案2:兜底强制对齐(适配所有clang-format版本)
如果你的clang-format版本低于12,没有上述参数,可以在对应代码段前后添加格式化控制注释,跳过自动格式化直接保留预期对齐样式:
// clang-format off Foo(const Foo&) = delete; Foo(Foo&&) = delete; Foo& operator=(const Foo&) = delete; Foo& operator=(Foo&&) = delete; // clang-format on
生效验证
修改配置后可通过如下命令测试单文件格式化效果,避免配置文件路径错误导致不生效:clang-format -style=file 你的测试源文件.cpp
内容的提问来源于stack exchange,提问作者MarcusAronsson
相关产品推荐
相关产品推荐

