在Windows(7)上的Eclipse(4.4)CDT(8.5)中,if
和else if
条件下新行的缩进对我来说没有意义。日食在哪里这套呢?
我试过看Window>偏好> C / C ++>代码风格>格式化程序但无法看到任何相关设置。
在我输入条件或选择行并按Ctrl + I(" Fix Indentation")时按下返回键的示例。请注意,尽管嵌套级别不同,但前四行都具有相同的缩进。以下第五行缩进两个比前一行更多级别,第七行也与嵌套级别没有明显关系。
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;
}
有可能改变这个吗? 此外,如果有人可以对当前缩进/嵌套格式的解释发表评论,我们将不胜感激!
编辑:意识到这可能类似于Eclipse JDT Code Formatter: Indent parameter in IF-Statement
答案 0 :(得分:2)
有可能改变这个吗?
是。使用默认缩进策略(K& R内置),我使用 Ctrl + I 获得相同的效果,但如果我执行 Ctrl + Shift + F (格式代码)我得到以下内容。
} 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)))) {
如果要获得列对齐,而不是在连续行上进行简单缩进,请创建自己的格式设置配置文件并更改以下内容:
这是您在格式化时最终得到的结果(但不是在您简单地更正缩进时):
} 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)))) {
以下是显示设置的屏幕截图:
和