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

如何配置.clang-format实现#if与#endif间代码自动缩进?

clang-format配置实现预处理指令及包裹代码的缩进

要实现你想要的效果,只需要在.clang-format里配置两个关键选项:

  • IndentWidth: 设置基础缩进的空格数,比如你例子里用的是2,就设为2
  • IndentPPDirectives: AfterHash:让预处理指令(#ifdef/#else/#endif)对齐到当前代码块的缩进层级,同时让指令包裹的代码自动再缩进一层

完整的配置片段示例:

# 基础缩进宽度,可根据项目需求调整
IndentWidth: 2
# 让预处理指令跟随所在代码块的缩进,且包裹代码自动缩进
IndentPPDirectives: AfterHash

把这个配置应用到你给出的代码上,就能得到目标格式化结果:

格式化前代码:

void foo()
{
  #ifdef FOO
  bar1();
  #else
  bar2();
  #endif
}

格式化后代码:

void foo()
{
  #ifdef FOO
    bar1();
  #else
    bar2();
  #endif
}

注意确保没有其他缩进相关配置(比如DisableFormat)干扰效果,只要这两个选项设置正确,就能实现预处理指令缩进+包裹代码缩进的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:07:37