错误、漏洞、问题 - 页 1768

 
fxsaber:
这只有在傻瓜式的编译器中才能实现。你自己也知道。
C++编译器不会为你考虑清楚。
#include <iostream>
using namespace std;
struct S
{
    S operator +(const S&) {cout << "operator +\n"; return S{};}
};
S operator ""_s(const char*, size_t) {cout << "literal operator\n"; return S{};}
int main()
{
    cout << "___literal concatenation example___\n";
    S s = "sd"_s "sf"_s;
    cout << "___operator+ example___\n";
    S s2 = "sd"_s + "sf"_s;
}
产出。
符号连接的例子___。
字面运算符
运营商+例子___。
字面运算符
字面运算符

操作员+

正如你所看到的,在第二种情况下,operator+并没有被concatenation所取代(为literal创建,随后进行运行时添加)。编译器根本无法将其剪除,因为程序员有太多的可能性,这大大限制了优化的范围。当然,这不是MKL,它可能是不同的,但 "一个正常的编译器将为我做一切事情 "这个说法本身就是错误的。
 
pavlick_:
当然,这不是MQL,它可能是不同的,但 "一个正常的编译器将为我做一切 "的说法是错误的。
好吧,既然MQL中没有这样的操作符,那么不设置任何与之相关的功能也是合乎逻辑的。我不打算争论编译器的问题,因为我根本就不是一个程序员。我只知道一点MQL的情况。
 

厌倦了浪费时间和金钱:优化器挂在了最后一关。代理人什么都不做,一切都在授权阶段。日志中一片寂静。启用/禁用代理没有意义,优化 后一切从头开始。

谁面临过这个问题?如何与之斗争?

附加的文件:
opt1.png  44 kb
opt2.png  96 kb
opt3.png  88 kb
 

魔术线

在1024x768的屏幕分辨率下,MetaEditor\1495的操作顺序。

  • 打开所附文件
  • 将水平滚动滑块一直向右移动(如图所示)。
  • 在第三行点击/*12345*/。
进一步设置:服务/设置/常规/制表 4个字符
附加的文件:
Test.mq5  2 kb
 

当试图使用StringToInteger()将一个字符串转换 为数字时,如果字符串不包含数字,它将返回0而不出现错误(GetLastError() = 0)。如果输入参数包含一个字符串,并且用户错误地指定了数值--该函数将返回一个错误的值,并且不会显示错误。这很糟糕。

此外,如果字符串包含一个不正确的数字表示,例如,5o(而不是50),该函数将返回值5而不产生错误。不仅如此,它不是0,而且该函数将字符串分解为5,这又是不正确的。

亲爱的开发者,请改进该函数,增加错误代码,或者如果它不能解析字符串,则返回LONG_MAX值+错误,这样我们就可以确定哪里出了问题。你现在不能这样做。

检查脚本代码。

#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
input string value="05";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   const long iValue=StringToInteger(value);
   Print("iValue = ",iValue,", lastError = ",GetLastError());
  }
//+------------------------------------------------------------------+
 

实现你自己版本的功能--它应该不超过10分钟。

我们不会改变系统功能的行为。

 
Renat Fatkhullin:

实现你自己版本的功能--它应该不超过10分钟。

我们不会改变系统功能的行为。

所以你认为没有必要细化函数,特别是可以明显说谎的函数?

即使我们只是增加错误代码,也是可以的,但现在你建议我们重新发明车轮。当然,不是一个复杂的,而是一辆自行车。

 
Alexey Kozitsyn:

所以你认为没有必要细化函数,特别是可以明显说谎的函数?

即使你只是增加了错误代码,那也是好的,但现在你提出要重新发明车轮。当然,不是一个复杂的,而是一辆自行车。

不需要提炼,它们是wtoi/atoi的完全类似物。这个问题已经结束。
 

编译错误

#include <Math\Stat\Math.mqh>
struct S {};
 
你好,请告诉我是否可以在Metatrader中设置一个 "周期分隔符"? 我只想在m5上能看到15、30和小时的蜡烛结束的位置,这样我就不用总是看时间了,怎么做?
原因: