clang格式:中断函数参数

时间:2019-11-22 13:36:27

标签: c clang-format

我想使用clang格式来生成C函数,例如:

void cfg_InitConfig
(
    cfg_Config_t* cfg,
    char*         name
)
{
    // TODO function
}

阅读手册后,我认为clang格式无法做到。 有可能吗?

2 个答案:

答案 0 :(得分:2)

这是我目前最好的解决方法,可以打破函数参数,使其具有代码围栏而不是长行。我希望您可以在这里找到有用的东西。

为了变得不受限制,所讨论的代码必须长于限制,因此这是如何格式化更长的示例的方法:

void cfg_InitConfig(cfg_Config_t *cfgxxxxxxxxxxxxxx,
                    char *namexxxxxxxxxxxxxxxxxxx) {
  // TODO function
}

符号表示这些行与代码围栏有关。

---
Language:      Cpp
BasedOnStyle:  Google

AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignOperands: false
AlignTrailingComments: false

# !
AllowAllParametersOfDeclarationOnNextLine: false

AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None

AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes

# !
BinPackArguments: false
BinPackParameters: false

ColumnLimit: 80
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
CompactNamespaces: false

IncludeBlocks: Preserve
IndentWidth: 2

DerivePointerAlignment: false
PointerAlignment: Right

SortIncludes: true
SortUsingDeclarations: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: true

答案 1 :(得分:0)

根据您的问题,我研究了很多文档。不幸的是,没有办法破坏这样的代码

void cfg_InitConfig
(
    cfg_Config_t* cfg,
    char*         name
)

但是可以创建某个补丁来破坏这种对齐方式。创建这种补丁并不是那么容易。

但是,如果使用此选项,则可以得到接近的答案(正确率为80%),但实际上不是您想要的。这是代码

BinPackArguments : false
BinPackParameters: false
AlignConsecutiveAssignments : true
AlignConsecutiveDeclarations: true

使用此结果将是

void cfg_InitConfig(cfg_Config_t* cfgxxxxxxxxxx,
                    char*         namexxxxxxxx)
{
    // TODO function
}

您必须扩展函数的变量名,除非它们只能放在一行上

Reference