clang-format下struct与class成员缩进不符合预期问题咨询
解决clang-format中struct与class成员缩进不一致的问题
问题场景
格式化C++头文件时,希望struct成员的缩进规则和class匹配——struct成员缩进1个制表符(与class的访问修饰符同级),但当前配置下struct成员缩进了2个制表符,不符合预期。
相关代码与配置
初始头文件(test.h)
class MyClass{ public: int var; int var2; } struct myst { int foo; int bar; };
当前格式化配置
TabWidth: 4 IndentWidth: 4 UseTab: Always IndentAccessModifiers: true
执行的格式化命令
clang-format -style="{TabWidth: 4, IndentWidth: 4, UseTab: Always, IndentAccessModifiers: true}" test.h
当前不符合预期的输出
class MyClass { public: int var; int var2; } struct myst { int foo; int bar; };
期望输出
class MyClass { public: int var; int var2; } struct myst { int foo; int bar; };
解决方案
在格式化配置中添加StructMemberIndentation: OneLevel选项,该选项会让struct成员的缩进层级比class成员少一级,恰好满足需求。
更新后的完整配置:
TabWidth: 4 IndentWidth: 4 UseTab: Always IndentAccessModifiers: true StructMemberIndentation: OneLevel
对应的格式化命令:
clang-format -style="{TabWidth: 4, IndentWidth: 4, UseTab: Always, IndentAccessModifiers: true, StructMemberIndentation: OneLevel}" test.h
执行后即可得到符合预期的缩进效果。
内容的提问来源于stack exchange,提问作者Dexter Gaulin
相关产品推荐
相关产品推荐

