Особенности языка mql5, тонкости и приёмы работы - страница 150

 
Denis Kirichenko:

Он есть. Я привёл только одну запись из лога. Полный вот такой:

Тогда не понимаю, откуда последняя строка.

 
fxsaber:

Тогда не понимаю, откуда последняя строка.

После выбора контекстного меню "Редактировать" навигатор не может найти исходный mq5 по тому же самому пути, что и ex5.

Потому что ex5 был перемещён в папку скриптов из Shared Projects, где живёт mq5

Исправим. Сделаем такой же интеллектуальный поиск, что и в настройках тестера

 
fxsaber:

Спасибо, хорошее правило. Стал жертвой своей некомпетентности. Правда, нужно еще какое-то правило для такого более очевидного случая.


Может на оба случая Warning умный делать?

Тут должна быть ошибка компиляции.
 
Alexey Navoykov:
Тут должна быть ошибка компиляции.
Да ладно. На каком основании? delete не изменяет значение указателя, соответственно и нарушение константности отсутствует. Так, что, к компилтятору тут никаких претензий, все четко.
 
Vladimir Simakov:
Да ладно. На каком основании? delete не изменяет значение указателя, соответственно и нарушение константности отсутствует. Так, что, к компилтятору тут никаких претензий, все четко.
Речь про второй пример
 
Alexey Navoykov:
Речь про второй пример
void f( const int i )
{
  static const int j = i;
  
  Print(j);
}

void OnStart()
{
  f(1); // 1
  f(2); // 1
}

Инициализация static-переменной идет на первом вызове.
 
fxsaber:

Инициализация static-переменной идет на первом вызове.
Точно? Завтра протестить надо. В доках написано: Статические переменные существуют с момента выполнения программы и инициализируются однократно перед вызовом специализированной функции OnInit(). Если начальные значения не указаны, то переменные статического класса памяти принимают нулевые начальные значения.

Если как ты пишешь, то за писателем доков косяк лютый.
 
Vladimir Simakov:
...Если как ты пишешь, то за писателем доков косяк лютый.
Писатель доков то как-раз верно написал. Статические переменные не могут инициализироваться локальными значениями.
Если в Mql такое действительно компилируется, то видимо этот баг возник при исправлении порядка инициализации статических переменных, проведённом год назад.
 
Alexey Navoykov:
Писатель доков то как-раз верно написал. Статические переменные не могут инициализироваться локальными значениями.
Если в Mql это действительно сейчас компилируется, то видимо это возникший баг при исправлении инициализации статических переменных, проведённом год назад.
Или приведение к С++ стандарту, а в этом случае уже косяк по докам. Сейчас, голову соберу, кофе попью и проверю.
 

Разработчики. Пояснение нужно. Чему верить? Докам или реализации? Пока что undefined behavior получается.

@fxsaber, не советую до официальных пояснений юзать, вдруг возьмут и пофиксят.