Этот вопрос в основном указывается на C/С++, но я думаю, что другие языки также актуальны. Я не могу понять, почему используется параметр switch/case вместо if/else if. Мне очень нравится использование goto's и приводит к тому же виду беспорядочного кода, в то время как те же результаты могут быть достигнуты с if/else, если более организованным...
结果
第三个选项(开关)比第二个选项(函数指针)要稳定地慢。这是什么原因呢?
ZS 慢慢地。第三个开关比第二个开关快。一切都很好。
所以,如果你有一个指向函数的不可变数组,如果你用switch代替它,会更快。
所以,如果我们有一个指向函数的不可变数组,如果我们用switch代替它,就会更快。
嗯,在这种情况下,这是符合逻辑的,因为数组是动态填充的,这意味着不断的指针有效性检查。 当然,它可以被优化...
但是,如果MQL支持通过常数指针进行数组初始化,可能也会是这样。
p.s. 你的代码根本无法阅读。当然,我理解你会发现所有这些错综复杂的宏都很方便,因为你自己写了它们,所以你知道它们的作用。 但对于外部读者来说,这只是一个难题。我认为你自己不太可能在六个月内明白你在这里做了什么)至少要做个评论或什么的 ...
p.s. 你的代码完全无法阅读。当然,我理解你对所有这些与宏有关的计谋感到舒服,因为你自己写了它们,所以你知道它们的作用。 但对于外部读者来说--这只是一个难题。我认为你自己不太可能在六个月内明白你在那里做了什么)至少要做个评论或什么......
否则你就会变得一团糟。此外,我还在试验过渡的数量。如果没有宏,那就很难了。关于额外的评论--我将在未来考虑到这一点。
否则就会是一片混乱。更重要的是,我对过渡的数量进行了实验。如果没有宏,那就很难了。关于额外的评论--我将在未来考虑到这一点。
有时,拆开一个可理解的铺垫比开始拆开一个紧凑的拼图并立即放弃这个无用的活动要容易得多。
有时,解开一篇可理解的文章比开始解析一个紧凑的谜题并立即放弃手头的无用任务要容易得多。
除了我前面说的,测试仪中运行不匹配的最常见原因之一是错误的初始化或缺乏初始化。
虽然缺失变量的初始化很简单,但数组就比较复杂了。最常见的是发现数组元素 数量增加的情况,可能表明有问题的地方。
为了捕捉这种潜在的问题,你可以在专家顾问的开头插入这些字符串
如果这种情况被发现,那么详细的信息将被写入日志,并且运行将被停止。
SZZ示例 应用。
我理解,我自己也经常使用这种方法,但初始化怎么办?它怎么可能是无效的呢?
例如,ArrayResize和ArrayInitialize 被混淆了。或者,例如,指标在OnInit时对缓冲区进行ArrayInitialize,误以为缓冲区已经初始化。
例如,ArrayResize和ArrayInitialize被混淆了。
好吧,这是一个非常幼稚的错误。值得如此费力地去寻找它吗?
嗯,这是个幼稚的错误,值得花力气去找吗?
找到任何错误都需要努力。特别是当代码很大而且不是你自己的时候。