如何使用clang格式控制三元运算符的缩进?

时间:2016-08-23 08:36:16

标签: c++ clang-format

如何以clang格式控制三元运算符的缩进?我想要普通的延续,例如。

int foobar = bar ? a
        : b;

相反,我得到了运算符的对齐

int foobar = bar ? a
                 : b;

我已经有了AlignOperands:false 有什么想法吗?

(完整选项:-style ='{BasedOnStyle:LLVM,TabWidth:4,IndentWidth:4,ContinuationIndentWidth:8,UseTab:Always,AlignAfterOpenBracket:false,BreakBeforeBinaryOperators:All,AlwaysBreakTemplateDeclarations:true,AlignOperands:false,ColumnLimit: 120}')

2 个答案:

答案 0 :(得分:1)

我相信https://reviews.llvm.org/D50078如果合并可以解决此问题。

答案 1 :(得分:0)

如果您想看中我可以推荐这段代码。

int a = 10;
int b = 20;
bool flag = true;

int c =  \
     flag ? 
         a \
        : b;\

std::cout << c << "\n";

或者,您可以选择这种方式:

链接多个三元运算符时,例如就像if / else-if / else-if /.../ else序列,clang格式将继续对齐冒号 带问号,这会增加每个的缩进 有条件的:

int a = condition1 ? result1
                   : condition2 ? result2
                                : condition3 ? result3
                                             : result4;

此补丁可检测到这种情况(例如,在假分支中使用的条件 另一种条件),以避免在这种情况下缩进:

int a = condition1 ? result1
      : condition2 ? result2
      : condition3 ? result3
                   : result4;

当BreakBeforeTernaryOperators为false时,其格式如下:

int a = condition1 ? result1 :
        condition2 ? result2 :
        conditino3 ? result3 :
                     result4;