评论
贡献者
看起来 #endif 在错误的位置。 我没有看到支架问题。前两个 ifs 实际上意味着:
不需要第一个 if 应用于 PREVENT_LENGTHY_EXTRUDE 块。鉴于在该块中执行的测试,它是多余的。 Marlin 是开源软件。如果风格不够一致,也许你应该重新格式化并作为项目的补丁提供? |
贡献者作者
是的,马克,我知道它翻译的意思,但是因为没有人喜欢这样做,所以它要么意味着 a) 作者有别的意思而忘记了括号,b) 作者不关心代码的可读性。我希望它是…… if(something == 1)
doSomething();
doSomethingElse();
会很好的。 以上内容应为: #ifdef PREVENT_DANGEROUS_EXTRUDE
if(target[E_AXIS]!=position[E_AXIS])
{
if(degHotend(active_extruder)<EXTRUDE_MINTEMP && !allow_cold_extrude)
{
position[E_AXIS]=target[E_AXIS]; //behave as if the move really took place, but ignore E part
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM(MSG_ERR_COLD_EXTRUDE_STOP);
}
}
#endif
#ifdef PREVENT_LENGTHY_EXTRUDE
if(labs(target[E_AXIS]-position[E_AXIS])>axis_steps_per_unit[E_AXIS]*EXTRUDE_MAXLENGTH)
{
position[E_AXIS]=target[E_AXIS]; //behave as if the move really took place, but ignore E part
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM(MSG_ERR_LONG_EXTRUDE_STOP);
}
#endif
或者 #ifdef PREVENT_DANGEROUS_EXTRUDE
if((target[E_AXIS] != position[E_AXIS]) && (degHotend(active_extruder) < EXTRUDE_MINTEMP) && !allow_cold_extrude)
{
position[E_AXIS]=target[E_AXIS]; //behave as if the move really took place, but ignore E part
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM(MSG_ERR_COLD_EXTRUDE_STOP);
}
#endif
#ifdef PREVENT_LENGTHY_EXTRUDE
if(labs(target[E_AXIS]-position[E_AXIS])>axis_steps_per_unit[E_AXIS]*EXTRUDE_MAXLENGTH)
{
position[E_AXIS]=target[E_AXIS]; //behave as if the move really took place, but ignore E part
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM(MSG_ERR_LONG_EXTRUDE_STOP);
}
#endif
|
贡献者
我知道你觉得这种风格令人困惑,我同意它不是很清楚。 在我的第一篇文章中,我试图提出三点:
|
贡献者作者
感谢您的输入。我将尝试放置一个描述如何编写代码的文档(甚至应该有一些工作)并且一旦完成就会提出建议。 |
贡献者作者
添加到拉取请求e900ece |
你好,
它从Bernhard 于 2011-12-09提交的2bc5e7e开始。
endif 位置错误,只有在启用第一个选项时才会启用第二个选项。
然后:
if(target[E_AXIS]!=position[E_AXIS])
缺少大括号,天知道作者的意思。这是不正确的还是缩进不正确?
Marlin 中的编码风格是不存在的:-(