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

clang-format下struct与class成员缩进不符合预期问题咨询

解决clang-format中struct与class成员缩进不一致的问题

问题场景

格式化C++头文件时,希望struct成员的缩进规则和class匹配——struct成员缩进1个制表符(与class的访问修饰符同级),但当前配置下struct成员缩进了2个制表符,不符合预期。

相关代码与配置

初始头文件(test.h)

class MyClass{
    public:
        int var;
        int var2;
}

struct myst {
    int foo;
    int bar;
};

当前格式化配置

TabWidth: 4
IndentWidth: 4
UseTab: Always
IndentAccessModifiers: true

执行的格式化命令

clang-format -style="{TabWidth: 4, IndentWidth: 4, UseTab: Always, IndentAccessModifiers: true}" test.h

当前不符合预期的输出

class MyClass {
    public:
        int var;
        int var2;
}

struct myst {
        int foo;
        int bar;
};

期望输出

class MyClass {
    public:
        int var;
        int var2;
}

struct myst {
    int foo;
    int bar;
};

解决方案

在格式化配置中添加StructMemberIndentation: OneLevel选项,该选项会让struct成员的缩进层级比class成员少一级,恰好满足需求。

更新后的完整配置:

TabWidth: 4
IndentWidth: 4
UseTab: Always
IndentAccessModifiers: true
StructMemberIndentation: OneLevel

对应的格式化命令:

clang-format -style="{TabWidth: 4, IndentWidth: 4, UseTab: Always, IndentAccessModifiers: true, StructMemberIndentation: OneLevel}" test.h

执行后即可得到符合预期的缩进效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:01:15