错误、漏洞、问题 - 页 1923

 
fxsaber:

该帮助指出。如果没有指定初始值,静态内存类 变量的初始值为零。此外--没有模板也没关系

 
A100:

帮助说,。如果没有指定初始值,静态内存类 变量的初始值为零

在模板的情况下,我对腿的来源有一个大致的概念,因此理解为不可能在所有情况下都简单地添加模板线。

从技术上讲,这可能是一个错误。虽然,我认为从文档中引用的文字是在模板出现之前很久才写的,有些不准确。

 
fxsaber:

虽然我认为所引用的文档中的文字是在模板出现之前很久才写的,有些不准确。

在文档中,有一个相反的条目:"静态成员 必须明确地用所需的值进行初始化"。只有模板不影响这一点--所以在两种情况下(有模板和无模板)都必须产生或不产生错误--这就是一个矛盾之处
 
MetaTrader 5 build 1619 started (MetaQuotes Software Corp.)
Microsoft Windows XP (X86 based PC), IE 08.00, Intel Core2 Duo  T7700 @ 2.40 GHz, RAM: 2359 / 3581 Mb, HDD: 17612 / 27784 Mb, GMT+02:00
C:\Program Files\MetaTrader 5

更新后,MetaEditor不再运行,出现以下错误


1616年工作顺利,1619年则不然。

在按下F4后的终端日志中

2017.07.07 12:00:30.109 Error   MetaEditor not found
2017.07.07 12:39:54.296 Error   MetaEditor not found
 
A100:

我不太明白你的IMHO的意义。采取建立<=1596(32位)和检查(立即输出到.log文件[5-10秒]甚至一行)。我一分钟前检查了它。

[哪个缓存?哪个总是?有关于某个地方的东西!?]

我说的是专家标签和MQL5\Logs\文件夹。

IMHO它是出于与生俱来的细腻感而写的--对我们的经验中不一致的微妙暗示。对我来说,5-10秒决不是立即的。而且根据我的观察,这种延迟并不总是限于几秒钟。

[缓存就是缓存,一直到现在都是如此,延迟记录的问题已经在这个论坛上讨论过了--如果这对你来说真的很重要的话--搜索一下吧]。

 
Stanislav Korotky:

对我来说,5-10秒决不是立即的。而且根据我的观察,这种延迟并不总是限于几秒钟。

以前是5-10秒(在某些情况下可能更多),现在没有查看菜单--日志根本没有更新(!)(因为一天的开始已经过去了几个小时,文件是零,而专家标签有当天的新行)。为了传说中的 "几纳秒 "的终端加速,正常的日志记录被中断了。
 

编译错误

struct A {
        A() {}
        int aa;
};
struct B {
        static A a;
};
A B::a;
template<typename T>
struct C {
        static T a;
};
template<typename T>
T C::a;
void OnStart()
{
        B    x1;
        Print( x1.a.aa ); //нормально
        C<A> x2;
        Print( x2.a.aa ); //unresolved static variable 'C<A>::a'
}
听起来像前面的案例https://www.mql5.com/ru/forum/1111/page1943#comment_5410554,但你不能通过指定T C::a = 0; // A::A( int )缺失来隐藏这里的错误。
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.07.06
  • www.mql5.com
Форум алго-трейдеров MQL5
 

执行过程中出错

void OnStart()
{
        string text = "1234\0";
        Print(  "1>'",    text, "'" ); //не выводит завершающую кавычку
        printf( "2>'%s'", text );      //нормально
}

结果。

1>'1234
2>'1234'

 

编译错误

#define  MACRO( x )      Print( x )
void OnStart()
{
        MACRO/**/( 10 ); //error: '' - argument expected for the function-like macro
}
 

预计会出现相反的情况

class A {};
struct B {
        const A *       a1;   //(1) есть сообщение об ошибке
              A * const a2;   //(2) нет сообщения
};
void OnStart()
{
        B b1;
        B b2;
        b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}
  1. 如果结构B只包含第(1)行--有一个错误信息
  2. 如果结构B只包含第(2)行 - 没有错误信息
  3. 预计会出现相反的情况

此外,在这两种情况下没有预期的错误(1.和2.)。

void OnStart()
{
        B b1;
        B b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}