Eclipse CDT中if条件的新行缩进格式

Eclipse CDT中if条件的新行缩进格式,eclipse,indentation,eclipse-cdt,code-formatting,Eclipse,Indentation,Eclipse Cdt,Code Formatting,在windows上的Eclipse(4.4)CDT(8.5)中(7)在if和else if条件中缩进新行对我来说没有意义。在eclipse中,这个集合在哪里 我尝试过在窗口>首选项>C/C++>代码样式>格式化程序中查找,但看不到任何相关设置 例如,我在键入条件或选择行并按Ctrl+I(“修复缩进”)时按回车键。请注意,尽管嵌套级别不同,前四行都具有相同的缩进。下面的第五行比前一行缩进两个级别,第七行缩进两个级别与嵌套级别没有明显关系 else if (((wp == SMB_Protocol_

在windows上的Eclipse(4.4)CDT(8.5)中(7)在
if
else if
条件中缩进新行对我来说没有意义。在eclipse中,这个集合在哪里

我尝试过在窗口>首选项>C/C++>代码样式>格式化程序中查找,但看不到任何相关设置

例如,我在键入条件或选择行并按Ctrl+I(“修复缩进”)时按回车键。请注意,尽管嵌套级别不同,前四行都具有相同的缩进。下面的第五行比前一行缩进两个级别,第七行缩进两个级别与嵌套级别没有明显关系

else if (((wp == SMB_Protocol_Write_Byte) && (qcn >= 1)
        && (rp != SMB_Protocol_Process_Call) 
        && (rp != SMB_Protocol_Block_WR)) 
        || ((wp == SMB_Protocol_Write_Word) && (qcn >=2) 
                && (rp != SMB_Protocol_Block_WR)) 
                || ((wp == SMB_Protocol_Block_Write) 
                        && (qcn >= (CMD_Number_Bytes_max + 1)))) {
    e = EXIT_FAILURE;
}
我更喜欢以下几点:

else if (((wp == SMB_Protocol_Write_Byte) && (qcn >= 1)
                && (rp != SMB_Protocol_Process_Call) 
                && (rp != SMB_Protocol_Block_WR)) 
            || ((wp == SMB_Protocol_Write_Word) && (qcn >=2) 
                && (rp != SMB_Protocol_Block_WR)) 
            || ((wp == SMB_Protocol_Block_Write) 
                && (qcn >= (CMD_Number_Bytes_max + 1)))) {
    e = EXIT_FAILURE;
}
有可能改变这个吗? 另外,如果有人能对当前缩进/嵌套格式进行解释,将不胜感激

编辑:意识到这可能与

有可能改变这个吗

对。使用默认缩进策略(K&R内置),我可以得到与您相同的Ctrl+I,但是如果我使用Ctrl+Shift+F(格式代码),我会得到以下结果

}如果((wp==SMB\u协议\u写入\u字节)和&(qcn>=1)
&&(rp!=SMB\u协议\u进程\u调用)
&&(rp!=SMB_协议_块_WR))
||((wp==SMB\U协议\U写入\U字)和&(qcn>=2)
&&(rp!=SMB_协议_块_WR))
||((wp==SMB_协议_块_写入)
&&(qcn>=(CMD\u Number\u Bytes\u max+1))){
如果要获得列对齐,而不是在连续行上进行简单缩进,请创建自己的格式配置文件并更改以下内容:

else if (((wp == SMB_Protocol_Write_Byte) && (qcn >= 1)
                && (rp != SMB_Protocol_Process_Call) 
                && (rp != SMB_Protocol_Block_WR)) 
            || ((wp == SMB_Protocol_Write_Word) && (qcn >=2) 
                && (rp != SMB_Protocol_Block_WR)) 
            || ((wp == SMB_Protocol_Block_Write) 
                && (qcn >= (CMD_Number_Bytes_max + 1)))) {
    e = EXIT_FAILURE;
}
  • 缩进选项卡->选项卡策略为仅空格或混合空格
    • 默认为制表符时,仅缩进到下一个制表位
  • 换行选项卡->表达式/二进制表达式将缩进策略设置为在列上缩进
这就是格式化(而不是简单地更正缩进)时的结果:

}如果((wp==SMB\u协议\u写入\u字节)和&(qcn>=1)
&&(rp!=SMB\u协议\u进程\u调用)
&&(rp!=SMB_协议_块_WR))
||((wp==SMB\U协议\U写入\U字)和&(qcn>=2)
&&(rp!=SMB_协议_块_WR))
||((wp==SMB_协议_块_写入)&(qcn)
>=(CMD_Number_Bytes_max+1))){
以下是显示设置的屏幕截图:


您可以在eclipse的“首选项”对话框中定义自己的样式规则。@flatter但如何为
if
/
if else
条件定义样式规则?我的问题几乎是说我已经查看了这些首选项,但没有看到如何执行。感谢原始缩进在我看来是合乎逻辑的。您想要的缩进没有。提示:Checkt括号嵌套级别。@Olaf恐怕我不明白。组成前3行的前4个条件是AND'd,它们都是OR'd的子条件,每个条件都包含AND'd子条件。我想OR行应该比AND行缩进得少。我想h仅向前阅读这允许前4行是正确的,但它不能解释最后3行的连续缩进,也不能解释在这些行上使用双缩进而不是单缩进。你能进一步解释吗?Thanks@Olaf这就是我最初删除C/C++标记的原因,因为解释可能与实际的co有关de,不仅仅是它的布局。哇,谢谢Jonah!这非常接近我想要的。如此接近事实上,我认为它实际上回答了我提出的问题。我会问另一个问题来说明区别。(我一直在尝试实现GNU风格[在CDT中,AND&OR运营商开始新的生产线)我将密切关注您提交的新标签,我通常会观看EclipseCDT标签,所以我应该在那里看到它。