gpt4 book ai didi

c++ - 如何使用 clang 格式自动缩进具有 4 个空格的 C++ 类?

转载 作者:IT老高 更新时间:2023-10-28 13:01:39 31 4
gpt4 key购买 nike

我在项目的根目录中获得了下一个 .clang-format 文件:

---
AlignTrailingComments: true
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
BreakBeforeBinaryOperators: false
IndentWidth: 4
SortIncludes: false
NamespaceIndentation: All
...

当我在我的 c++ 头文件上运行 clang-format 时出现问题,这些类会像这样自动缩进:

enter image description here

如您所见,公共(public)和私有(private)标签仅缩进 2 个空格。但我想要实现的是以下输出(缩进是手动调整的):

enter image description here

这样,代码折叠变得非常愉快。

我如何调整我的 .clang 格式来实现这种效果?如果不可能,您将如何修补 clang 格式的源代码以实现这种期望的行为?

编辑:

我尝试使用不成功的 AccessModifierOffset,我使用了值 {-2,0,2,4} 下面的示例:

enter image description here

如您所见,公共(public) block 内的语句不会正确缩进。

EDIT2:

我已经尝试了@Henrique Jung 解决方案,这绝对不是我想要的,如果使用这种组合,结果会是这样的:

enter image description here

如您所见,函数内部的内容缩进了 8 个空格而不是 4 个空格,这不好。

EDIT3:

几个月前我提供了一个赏金,所以我会再试一次,因为这个肯定很有趣。如果我对 clang 格式的源代码有足够的了解,我会试一试,不幸的是我没有。

最佳答案

据我所知,clang-format 没有提供与非访问修饰符类内容不同的缩进函数内容的选项。也就是说,考虑以下代码:

class A {
public:
void foo() {}
}

void bar() {
int a;
}

在这段代码中,“void foo() {}”行的缩进量总是与“int a;”相同。通过 clang 格式。

与您似乎想要的可用样式最接近的是不缩进访问修饰符,例如:

class A {
public:
void foo() {}
}

void bar() {
int a;
}

这是由例如 WebKit、Mozilla 和 LLVM 样式完成的。通过设置实现:

IndentWidth: 4
AccessModifierOffset: -4

关于c++ - 如何使用 clang 格式自动缩进具有 4 个空格的 C++ 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42799183/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com