Вопросы, касаемые нового билда... - страница 2

 

уберите точки в имени!

и все заработает

'.' - semicolon expected        Perevorot_T.mq4 24      21
'.' - semicolon expected        Perevorot_T.mq4 25      21
 
hoz:


Действительно, про имена там всё сказано, но про передачу массивов только по ссылке нет.

Кстати, ещё странные ошибки появились подобного содержания:

И таких довольно-таки много. С чем это связано вообще?


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

Массивы всегда передавались по ссылке. С самого начала.

Просто в старой семантике отсутствие знака & (передачи по ссылке) подразумевало константность передаваемого массива

 
Scriptong:

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


Перегруженной это как? Типа очень загружена (чрезмерно)?

В общем-то, fLotPrecision встречается по коду только 2 местах:

// 2.5 Определяем минимальную разрядность лота. ============================================================================================
int fLotPrecision ()
{
    int li_lotPrecision = 0;

    while (bd_LOTSTEP < 1)
    {
        bd_LOTSTEP *= 10;
        li_lotPrecision++;
    }

    return (li_lotPrecision);
}
 bi_LotPrecision = fLotPrecision ();

Что тут может быть перегруженным?

 
hoz:
Что тут может быть перегруженным?

Другое объявление функции с таким же именем нигде не встречается? В инклюднике может в каком?
 
hoz:

Загрузив один из свой проектов в новый билд у меня посыпались ошибки. Ну меня это не удивило по некоторых известным причинам. Сразу возникли вопросы:

1. Как в файлах-включениях, так и в библиотеках как я понял теперь в параметрах функций передавать массивы нужно теперь обязательно по ссылке?

В эксперте в глобальных есть такие внешние переменные:

При компиляции данного эксперта компилятор ругается на эти 2 строки кода так:

2. Почему? Зачем так требуется точка с запятой??? Логика в чём?


Почитайте всю эту ветку https://www.mql5.com/ru/forum/148850/page38 и большинсво вопросов еще не заданных отпадет ....
 
alsu:
Другое объявление функции с таким же именем нигде не встречается? В инклюднике может в каком?


Неа. Вот файлы, касаемые данного момента прикрепляю.
Файлы:
3files.zip  9 kb
 
hoz:

Неа. Вот файлы, касаемые данного момента прикрепляю.
#include <hoz_LoggingToAnyWhere@Include.mqh>
#include <hoz_ReturningSomeInfo@Include.mqh>
#include <hoz_HandlingWithErrorS@Include.mqh>

В этих файлах тоже ничего нет?
 

Могу ошибиться, но.

hoz_Base@Include.mqh включает hoz_Base@ListOfFunc.mqh, который импортирует функции из hoz_Base@Library.ex4, которая, в свою очередь, вновь включает hoz_Base@Include.mqh.

Ситуация с повторным включением файлов в старой версии терминала отрабатывалась корректно, но оно ведет себя не так, когда в кольцо входит ex4-библиотека. Ведь получается, что в ней уже есть импортированная из нее же посредством инклюдников такая же функция.

Компилятор воспринимает это как перегрузку и начинает ругаться.

 
Убрал
alsu:

В этих файлах тоже ничего нет?

Объявляется данная (и вообще любая из тех функций) в канкретной библиотеке, а в тех других инклюдах тока объявления глобальных переменных, которые используются либо в соответствующих им библиотеках (судя по названию), либо в самой сове, которая включает эти инклюды.

alsu:

Могу ошибиться, но.

hoz_Base@Include.mqh включает hoz_Base@ListOfFunc.mqh, который импортирует функции из hoz_Base@Library.ex4, которая, в свою очередь, вновь включает hoz_Base@Include.mqh.

Хотите сказать, что в инклюдниках разных библиотек не бывает так чтоб они ссылались друг на друга?

Ведь есть какая-то библиотека, в которой функции общие типа ND (нормализация) или ещё какие-нить, и есс-но что её будут импортировать разные другие библиотеки, которые используют данную функцию, а также и другие какие-то. Получается логично, что это не является ошибкой. Но как фактически.. тут вопрос остаётся открытым. Я не въехал пока что... :(

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