如何阻止clang-format在#define定义的大括号列表前自动插入换行符
解决方法
- 若使用的clang-format版本≥14,在现有配置中新增以下两项即可:
AllowShortBlocksOnASingleLine: Always AllowShortMacroDefinitionsOnASingleLine: true
两项分别控制短代码块允许单行展示、短宏定义允许保持单行,不会强制拆分大括号到新行。
- 若使用的clang-format版本低于14,在现有配置中补充如下参数:
BreakBeforeBraces: Attach
该配置会强制大括号紧跟前置内容,不会单独换行触发宏的反斜杠拆分。
- 若以上全局配置仍不满足需求,可以针对单条不需要格式化的宏,用格式化开关注释包裹,跳过clang-format处理:
// clang-format off #define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W // clang-format on
原因说明
你已设置ColumnLimit: 0排除了长度超限折行的可能,出现该问题是因为clang-format默认的大括号换行规则、宏定义拆分规则没有被显式配置为允许单行,才会自动给宏的大括号加换行和续行反斜杠。
内容的提问来源于stack exchange,提问作者Edward W
相关产品推荐
相关产品推荐

