使用LLVM风格时clang-format如何移除函数声明中')'与'{'间的空格
clang-format 去除函数右括号与起始大括号间空格的配置方案
完全不需要修改clang-format源码,对应功能由官方原生支持,配置项容易因版本迭代的层级调整被忽略,按以下步骤配置即可实现目标效果。
标准配置写法
在项目根目录创建.clang-format文件,基于LLVM预设做最小化调整:
# 复用LLVM风格的全部默认规则 BasedOnStyle: LLVM # 移除函数声明/定义处右括号与起始大括号之间的空格 SpaceBeforeFunctionOpenBrace: false
低版本适配
如果使用的clang-format版本低于14.0,顶层不存在SpaceBeforeFunctionOpenBrace配置项,可改用嵌套子项实现相同效果:
BasedOnStyle: LLVM SpaceBeforeParensOptions: AfterFunctionDeclaration: Never AfterFunctionDefinition: Never
配置说明:上述规则仅修改函数相关的空格逻辑,不会影响
if、for、while等流程控制语句的括号与大括号间距,和LLVM默认风格保持一致。
效果校验
执行给出的格式化测试命令,对示例输入的输出将完全匹配预期:
void main(){ printf("Hello, world!"); return; }
常见排查误区
- 不要错配
SpaceBeforeBraces项,该配置仅控制大括号的换行规则,和括号、大括号间的间距无关,调整后无法达到目标效果。 - 上述配置为最小改动实现,不需要修改其他LLVM默认规则,就能完整保留原有偏好的风格。
内容的提问来源于stack exchange,提问作者Hikaru
相关产品推荐
相关产品推荐

