如何配置.clang-format实现指定C代码大括号缩进风格?
实现指定C大括号风格的clang-format配置修改方案
需添加/修改以下通用支持的clang-format属性,以匹配你要求的大括号风格:
核心配置项说明
BreakBeforeBraces: Custom
必须设置为Custom,才能启用自定义大括号换行规则,替换Microsoft风格的默认大括号行为。BraceWrapping
自定义大括号的换行逻辑,满足规则1(对齐要求)和规则2(大括号单独成行):AfterIf: true:if语句后将左大括号单独成行AfterWhile: true:while语句后将左大括号单独成行AfterDo: true:do语句后将左大括号单独成行AfterElse: true:else语句后将左大括号单独成行(仅在else后不紧跟if时生效)BeforeElse: false:确保else与上一个右大括号分开展示,保证右大括号单独成行BeforeWhile: false:do-while结构中,while语句与上一个右大括号分开,保证右大括号单独成行
IndentBraces: true
让大括号本身与所属控制语句保持对应缩进层级,同时代码块内的普通代码与对应的大括号对齐,完全匹配规则1。AllowShortBlocksOnASingleLine: Never
禁止短代码块与大括号同行,确保大括号为所在行唯一非空白字符(规则2),同时强制所有代码块使用大括号包裹(规则3)。AllowShortIfStatementsOnASingleLine: Never
禁止if语句省略大括号直接写单行代码,强制添加大括号(规则3)。AllowShortLoopsOnASingleLine: Never
禁止for/while语句省略大括号直接写单行代码,强制添加大括号(规则3)。
完整配置示例
--- BasedOnStyle: Microsoft ColumnLimit: '120' TabWidth: '4' UseTab: Never BreakBeforeBraces: Custom BraceWrapping: AfterIf: true AfterWhile: true AfterDo: true AfterElse: true BeforeElse: false BeforeWhile: false IndentBraces: true AllowShortBlocksOnASingleLine: Never AllowShortIfStatementsOnASingleLine: Never AllowShortLoopsOnASingleLine: Never ...
内容的提问来源于stack exchange,提问作者fgrieu
相关产品推荐
相关产品推荐

