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

 
Вроде как повторное включение хотели фильтровать. Не помню, чем закончилось.
 
Andrey Khatimlianskii:
Вроде как повторное включение хотели фильтровать. Не помню, чем закончилось.

Так оно вроде всегда фильтровалось. По крайней мере сколько помню.   Но через #ifndef всё-равно надёжней, т.к. если один и тот же файл включён через разные пути (символическая/жёсткая ссылка), то ME не понимает, что это один и тот же файл.

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

 
Возможно вопрос именно про библиотеки а не инклудники?
 
SemenTalonov:

странно что директивы ввели а сами не используют

Подобное использую, но это почти безумство для каждого mqh такое прописывать.

Andrey Khatimlianskii:
Вроде как повторное включение хотели фильтровать. Не помню, чем закончилось.

Повторное включение игнорируется.

TheXpert:
Возможно вопрос именно про библиотеки а не инклудники?

С ex4/5-библиотеками никогда не работал, поэтому имел в виду инклудники.

 
fxsaber:

Повторное включение игнорируется.

А в чем тогда проблема с 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

fxsaber, 2019.01.14 17:30

Что делать при подключении библиотек, каждая из которых подключает внутри себя одинаковые библиотеки?


?

 
Andrey Khatimlianskii:

А в чем тогда проблема с?

Сейчас с этим все в порядке, но предлагалось отменить, если правильно понял.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Alexey Navoykov, 2019.01.14 15:26

В С++ код обрабатывается компилятором строго сверху вниз, поэтому всё что сверху - уже инициализировано.  А к нижнему ты обратиться не можешь. Поэтому всё чётко.  А раз тут разработчики ввели какие-то свои правила, то пусть обеспечат корректный порядок выполнения кода.

 
fxsaber:

Сейчас с этим все в порядке, но предлагалось отменить, если правильно понял.

А какая связь с инклюдниками?
 
fxsaber:

Сейчас с этим все в порядке, но предлагалось отменить, если правильно понял.

Нет, неправильно поняли.

Предлагали препроцессору обрабатывать код по порядку. При этом инклуды точно так же вставляются в код в месте первого упоминания.
 
Andrey Khatimlianskii:

Нет, неправильно поняли.

Предлагали препроцессору обрабатывать код по порядку. При этом инклуды точно так же вставляются в код в месте первого упоминания.

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

 
fxsaber:

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

//gcc 5.4.0

int main(void)
{
    g();
    return 0;
}

void g() {f();}

void f() {}

про порядок сказали, а про многопроходность забыли.

причем с порядком там вроде тоже пару UB есть

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