clang-format 缩进 X 个宏

clang-format indents X macros

提问人:Wolf 提问时间:12/6/2022 最后编辑:Wolf 更新时间:12/6/2022 访问量:224

问:

我正在使用 c 样式的 X 宏来创建双向枚举,如下所示:

namespace ns
{
#define CFG_INT_TABLE                                                          \
    X(CFG_1, "cfg_1", invalid_int_value),                                      \
    X(CFG_2, "cfg_2", invalid_int_value),                                      \
    X(CFG_3, "cfg_3", 10)

#define X(a,b,c) a
    enum class IntegerConfigs : int
    {
        CFG_INT_TABLE,
        TOTAL_ELEMENTS
    }
#undef X

#define X(a,b,c) b
   array ...
#undef X
    [...]
}

但是,当运行 clang-format 时,它会像这样缩进行:

#define CFG_INT_TABLE                                                           \
    X(CFG_1, "cfg_1", invalid_int_value),                                       \
        X(CFG_2, "cfg_2", invalid_int_value),                                   \
        X(CFG_3, "cfg_3", 10)

我无法从 clang-format 的选项中了解如何正确缩进代码,如果可能的话,我更喜欢只更改文件而不是代码本身的修复程序。.clang-format

这是我的文件:.clang-format

BasedOnStyle: GNU
AccessModifierOffset: -2
ColumnLimit: 100
IndentWidth: 4
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
FixNamespaceComments: true
SpaceBeforeParens: ControlStatements
AllowShortFunctionsOnASingleLine: Empty
NamespaceIndentation: All
BreakConstructorInitializers: AfterColon
ReferenceAlignment: Left
BreakBeforeBraces: Custom
Standard: c++20
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
  AfterClass: true
  AfterControlStatement: false
  AfterEnum: true
  AfterFunction: true
  AfterNamespace: true
  AfterStruct: true
  AfterUnion: true
  BeforeCatch: false
  BeforeElse: false
  IndentBraces: false

谢谢!

C++ 格式化 clang-format x-macros

评论

0赞 Lundin 12/6/2022
当您使用任何带有“”换行符的随机宏时会发生什么?
0赞 Lundin 12/6/2022
与您的问题无关,这个 X 宏可以通过多种方式进行改进。删除逗号,并考虑将 X 宏作为参数传递给列表宏。这样一来,它就会变得更加灵活和通用。
0赞 Wolf 12/6/2022
如果只有 2 行,如果可能,它会尝试将它们放在 1 行上。如果超过 2 行,则从第一行缩进一次。谢谢你的建议,我会实施的。
0赞 Lundin 12/6/2022
也许一个快速而肮脏的解决方法是包含一个空行,该行后只有一个反斜杠?#define
0赞 Wolf 12/7/2022
可悲的是,@Lundin没有工作......我最终使用了评论。谢谢你的帮助!// clang-format off

答: 暂无答案