能否通过clang-format实现C++初始化列表的对齐格式?
关于clang-format实现列表初始化的标识符对齐问题
目前clang-format没有专门的配置项能实现你想要的效果:在标识符与列表初始化器{}之间保留空格,同时让多行变量声明的初始化器对齐。
clang-format的内置规则中,会默认将列表初始化的{紧贴标识符,哪怕调整AlignConsecutiveDeclarations这类对齐选项,也无法单独拆分标识符和{来做对齐——因为它会把{当作标识符的一部分来处理,自然不会在两者之间保留空格,更没法实现你示例里的对齐效果。
你提到的带=的初始化方式(type identifier = {arguments};)能触发对齐,是因为=会被当作声明的分隔符,AlignConsecutiveDeclarations会识别并对齐后续的=和初始化器,但这确实不是你想要的常规列表初始化写法。
临时替代方案
如果必须保留这种格式,可以用clang-format的禁用注释手动锁定格式,但这会牺牲自动格式化的一致性:
// clang-format off std::string short {"Hi!"}; std::string quite_long {"Hi!"}; std::string even_longer {"Hi!"}; // clang-format on
如果这个需求对你很重要,也可以考虑向LLVM的官方issue tracker提交功能请求,提出新增针对列表初始化的空格与对齐配置项。
内容的提问来源于stack exchange,提问作者Mippen
相关产品推荐
相关产品推荐

