用于返回参数和变量的 Clang 格式 binpack OnePerLine

问题描述 投票:0回答:1

我有以下代码:


    return first_long_function_name(argument) ||
           second_long_function_name(argument) || third_long_function_name(argument);

我希望它的行为像

BinPackParameters=false
,如果它不能放在一行中,则应该将每个子句放在单独的行中。有什么办法可以做到这一点吗?

    return first_long_function_name(argument) ||
           second_long_function_name(argument) || 
           third_long_function_name(argument);

我的

.clang-format
文件如下:

# See https://clang.llvm.org/docs/ClangFormatStyleOptions.html for all options

Language: Cpp

# Spaces
ColumnLimit: 120
IndentWidth: 4
AccessModifierOffset: -4
IndentAccessModifiers: false
NamespaceIndentation: None
IndentCaseLabels: true
AlwaysBreakTemplateDeclarations: Yes
SpaceAfterTemplateKeyword: false

# Function calls
AlignAfterOpenBracket: Align
BinPackParameters: false
BinPackArguments: false
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false

# Curly Braces
BreakBeforeBraces: Custom
BraceWrapping:
    AfterFunction: true
    AfterControlStatement: Never
InsertBraces: true

# Variables
PointerAlignment: Right

# Short lines
AllowShortEnumsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortBlocksOnASingleLine: Empty

# Comments
ReflowComments: false

# Includes
SortIncludes: Never

ForEachMacros: ['LOOP', 'LOOP_FROM', 'LOOP_TYPE', 'LOOP_FROM_TYPE']

PenaltyReturnTypeOnItsOwnLine: 1000
c++ clang clang-format
1个回答
0
投票

是的,从 clang-format 20 开始,可以使用

BreakBinaryOperations
选项(也参见 pull request)。您可以将其设置为
OnePerLine
RespectPrecedence
(在后一种情况下,例如包含
&&
||
的操作最终导致
&&
操作仍在一行上)。 godbolt 上的实例。

请注意,llvm 版本 20 尚未发布。但根据您的系统,您可能会找到针对它的夜间构建。另外,我发现如果您安装了 Visual Studio,那么在 Windows 上从源代码构建非常容易,所以您可以尝试一下。

© www.soinside.com 2019 - 2024. All rights reserved.