我想使用clang-format来生成C函数,例如:
void cfg_InitConfig ( cfg_Config_t* cfg, char* name ) { // TODO function }
阅读了说明书后,我觉得clang格式不行,有可能吗?
ylamdve61#
这是我目前最好的打破函数参数的解决方案,用代码围栏代替长行。我希望你能在这里找到一些有用的东西。为了被隔离,相关代码必须长于限制,因此下面是它如何格式化较长的示例:
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
huwehgph2#
使用这些设置几乎可以实现所需的格式:
echo 'void cfg_InitConfig(cfg_Config_t*cfg,char*name){return 0;}' \ | \ clang-format-14 \ --Werror \ --style="{\ AlignAfterOpenBracket: BlockIndent, \ AlignConsecutiveDeclarations: true, \ AllowAllParametersOfDeclarationOnNextLine: false, \ BinPackParameters: false, \ ColumnLimit: 30, \ IndentWidth: 4, \ PointerAlignment: Left \ }"
输出:
void cfg_InitConfig( cfg_Config_t* cfg, char* name ) { return 0; }
jyztefdp3#
我已经研究了很多很多文件根据您的问题。不幸的是没有办法打破您的代码这样
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
3条答案
按热度按时间ylamdve61#
这是我目前最好的打破函数参数的解决方案,用代码围栏代替长行。我希望你能在这里找到一些有用的东西。
为了被隔离,相关代码必须长于限制,因此下面是它如何格式化较长的示例:
**!**符号表示这些行与代码栏有关。
huwehgph2#
使用这些设置几乎可以实现所需的格式:
输出:
jyztefdp3#
我已经研究了很多很多文件根据您的问题。不幸的是没有办法打破您的代码这样
但是有人可以创造补丁来打破这种排列,这是可能的。创造这种补丁并不那么容易。
但如果你使用这个,你可以得到接近的答案(80%正确),但实际上不是你想要的。这里是代码
利用这个结果
你必须扩展你的变量名的函数,除非他们可以适合在一行
Reference