Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ClangFormat参数和参数binpacking设置未按预期工作_C_Clang Format - Fatal编程技术网

ClangFormat参数和参数binpacking设置未按预期工作

ClangFormat参数和参数binpacking设置未按预期工作,c,clang-format,C,Clang Format,如果我有一个参数对于列宽来说太长的函数,它会像预期的那样将它们全部放在新行上。但是,这似乎有时会破坏我的指针对齐: 格式化之前: struct ConnectionResult *connect_to_server(struct Folders *start_folder, struct Config *config, struct CTypet *conn_type) struct ConnectionResult *connect_to_server(struct Folders *sta

如果我有一个参数对于列宽来说太长的函数,它会像预期的那样将它们全部放在新行上。但是,这似乎有时会破坏我的指针对齐:

格式化之前:

struct ConnectionResult *connect_to_server(struct Folders *start_folder, struct Config *config, struct CTypet *conn_type)
struct ConnectionResult *connect_to_server(struct Folders *start_folder
                                           struct Config * config, 
                                           struct CTypet * conn_type); 
格式化后:

struct ConnectionResult *connect_to_server(struct Folders *start_folder, struct Config *config, struct CTypet *conn_type)
struct ConnectionResult *connect_to_server(struct Folders *start_folder
                                           struct Config * config, 
                                           struct CTypet * conn_type); 
它似乎更喜欢对齐实际变量名,而忽略指针对齐规则。这导致我的函数有时看起来与其他函数的样式不一致。我的
.clangu格式是

AlignAfterOpenBracket: Align
AlignConsecutiveMacros: 'true'
AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignTrailingComments: 'true'
BreakBeforeBraces: Allman
IndentCaseLabels: 'true'
IndentWidth: '4'
Language: Cpp
PointerAlignment: Right
SortIncludes: 'true'
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: 'true'
SpaceInEmptyParentheses: 'false'
BinPackParameters: 'false'
BinPackArguments: 'false'
UseTab: Never
ColumnLimit: 80
作为旁注,这种配置有时也会以一种非常丑陋的方式打破长循环:

之前:

for(size_t current_conn = initial_conn; current_connection <= max_connections; current_conn += connection_offset) { ...}

for(size\u t current\u conn=initial\u conn;current\u connection简短回答:否,
clangformat
不会执行这两项操作

使参数声明对齐的是
alignconsequentivedcarations
,控制声明中
*
&
周围的间距的是
PointerAlignment
。但似乎
alignconsequentivedcarations
忽略
PointerAlignment
,而
PointerAlignment:右
实际上只是指“在
*
&
之前添加一个空格”

不幸的是,所有这些似乎都不是

对于For循环,似乎需要一个假设的新样式选项,称为
AllowBinPackForLoop
,它默认为true(向后兼容),但是false将允许对For循环进行拆分,就像您询问它是否需要多行一样。但据我所知,没有类似的选项存在