Ошибки, баги, вопросы - страница 2479

 
При компиляции этого сприпта
void Func() { return(true); }

void OnStart()
{
  if (Func())
    ;
}


такой лог

'if' - expression of 'void' type is illegal     Test8.mq5       5       3
empty controlled statement found        Test8.mq5       6       5
'return' - 'void' function returns a value      Test8.mq5       1       15
2 error(s), 1 warning(s)                3       2


Выделил две ошибки. Это нормально, что они идут не сверху-вниз исходника?

 
fxsaber:
При компиляции этого сприпта


такой лог


Выделил две ошибки. Это нормально, что они идут не сверху-вниз исходника?

А разве void функция может возвращать значение?

void Func() { return(true); }
 
Alexey Viktorov:

А разве void функция может возвращать значение?

Ошибка сделана специально для примера. Спрашивал о другом.

 
fxsaber:

Выделил две ошибки. Это нормально, что они идут не сверху-вниз исходника?

ну Вы же можете любую функцию описать как в начале кода MQL, так и в конце - сборка при компиляции будет все равно произведена по логике производителя компилятора, что он там и в какой последовательности собирает - один разработчик знает, тут видимо сначала идет сборка main() и по всем вызовам функций из main() идет компиляция функций, потом уже идет все что осталось, где то Илья писал как классы собирает компилятор MQL

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

у нас же компилятор, а не интерпретатор? - в интерпретаторе там, ну примерно, как сверху вниз идет выполнение команд или вернее чтение исходнника машиной


PS: можете проверить что компилятор не все включает в байт-код, напишите тестовый код, откомпилируйте, посмотрите размер .ex5 потом добавьте в любое место (сверху или снизу) много разных функций и не делайте их вызовы - размер ex5 не должен измениться, они не были включены в ex5

 
Igor Makanu:

ну Вы же можете любую функцию описать как в начале кода MQL, так и в конце - сборка при компиляции будет все равно произведена по логике производителя компилятора, что он там и в какой последовательности собирает - один разработчик знает, тут видимо сначала идет сборка main() и по всем вызовам функций из main() идет компиляция функций, потом уже идет все что осталось, где то Илья писал как классы собирает компилятор MQL

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

у нас же компилятор, а не интерпретатор? - в интерпретаторе там, ну примерно, как сверху вниз идет выполнение команд или вернее чтение исходнника машиной


PS: можете проверить что компилятор не все включает в байт-код, напишите тестовый код, откомпилируйте, посмотрите размер .ex5 потом добавьте в любое место (сверху или снизу) много разных функций и не делайте их вызовы - размер ex5 не должен измениться, они не были включены в ex5

В каждой ошибке идет запись про номер строки и столбца. Не имеет значения, в каком виде все внутри компилятора. Вроде, всегда была сортировка ошибок по номеру строки, что указан.

 
fxsaber:

Вроде, всегда была сортировка ошибок по номеру строки, что указан.

никогда не обращал внимания, по клику всегда попадал в место где ошибка, как то не принципиально было

 
Почему на время, пока MQ выкладывают новую бету, теряется связь с MQ-Demo?
 
fxsaber:
Почему на время, пока MQ выкладывают новую бету, теряется связь с MQ-Demo?
Зато можно оттестировать потерю связи с сервером. А ещё очень хорошо, что торговля - её разрешение со стороны сервера - часто выключается/включается. Тоже для тестов подходит. Ещё бы какие-нибудь параметры аккаунта менялись бы туда-сюда - чудесно бы было для тестов. Например, плечо, уровни маржинколл и стопаут, и т.д..
 
Artyom Trishkin:
Зато можно оттестировать потерю связи с сервером. А ещё очень хорошо, что торговля - её разрешение со стороны сервера - часто выключается/включается. Тоже для тестов подходит. Ещё бы какие-нибудь параметры аккаунта менялись бы туда-сюда - чудесно бы было для тестов. Например, плечо, уровни маржинколл и стопаут, и т.д..

А представляешь сколько будет соплей от тех кому это проверять не надо? Они ведь этого не поймут.

 
Artyom Trishkin:
Зато можно оттестировать потерю связи с сервером. А ещё очень хорошо, что торговля - её разрешение со стороны сервера - часто выключается/включается. Тоже для тестов подходит. Ещё бы какие-нибудь параметры аккаунта менялись бы туда-сюда - чудесно бы было для тестов. Например, плечо, уровни маржинколл и стопаут, и т.д..

Это все можно делать через кастомный Тестер.

Причина обращения: