You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置clang-format实现参数超列时每行一个及括号格式化

当然可以实现你想要的格式化效果!咱们通过调整clang-format的配置就能精准达成目标,以下是具体的方案:

调整后的完整配置
Language: Cpp
IndentWidth: 2
ObjCBlockIndentWidth: 2
ContinuationIndentWidth: 2
ColumnLimit: 120
BinPackArguments: false
BinPackParameters: false
AlignAfterOpenBracket: DontAlign
IndentCaseLabels: true
BreakAfterOpenBracket: Always
SpaceBeforeBraces: Always
BraceWrapping:
  AfterFunction: false
配置说明与效果展示

1. 函数调用格式化(每个实参单独成行)

针对你给出的函数调用代码:

SDL_SetRenderDrawColor(renderer,153 + floor(toGreenRed * percentage),51 + floor(toGreenGreen * percentage),51 + floor(toGreenBlue * percentage),255);

格式化后会变成:

SDL_SetRenderDrawColor(
  renderer,
  153 + floor(toGreenRed * percentage),
  51 + floor(toGreenGreen * percentage),
  51 + floor(toGreenBlue * percentage),
  255
);

关键配置作用:

  • BreakAfterOpenBracket: Always:强制在左括号后换行,同时让右括号单独成行
  • BinPackArguments: false:禁止将多个实参压缩到同一行,确保每个实参单独占一行
  • AlignAfterOpenBracket: DontAlign:让实参直接使用缩进,无需对齐到左括号位置

2. 函数定义格式化(右括号前加空格+大括号同行)

针对你给出的函数定义代码:

void renderHealthBox( SDL_Renderer *renderer, int sideUiWidth, int yOffset, float percentage, float laksjdlkajsdlkasjdlkasjd) {

格式化后会变成:

void renderHealthBox(
  SDL_Renderer *renderer,
  int sideUiWidth,
  int yOffset,
  float percentage,
  float laksjdlkajsdlkasjdlkasjd
) {

关键配置作用:

  • BreakAfterOpenBracket: Always + BinPackParameters: false:让每个参数单独成行,左括号后换行
  • SpaceBeforeBraces: Always:确保右括号和大括号之间有一个空格
  • BraceWrapping.AfterFunction: false:让大括号和右括号保持在同一行(如果希望大括号单独成行,可将此值改为true)

内容的提问来源于stack exchange,提问作者ryanzec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:27:46