Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй счет удобным способом. Здесь их 4!
hoz
1936
hoz 2013.04.18 12:53 

 Согласно справке, включение файлов представляет собой полную замени строки #include <имя_файла> содержимым данного файла, который нужно включить. Тут всё понятно. Это удобно, как-раз для того, чтоб некоторые функции выносить во внешние файлы, дабы не разростался основной код и проще было с ним работать. Т.е. некоторые функции определённого действия группировать в группы типа: работа со строками, работа с объектами, манименеджмент... и тд.

А вот с импортом функций я не понял. Как оно работает? Если уж импорт осуществляется из скомпилированных файлов, то исходный код не вставится как в предыдущем варианте с инклюдом. тогда зачем оно нужно, что нам это даёт? Поясните, пожалуйста, очень интересно знать.
Vadim Zhunko
5219
Vadim Zhunko 2013.04.18 15:34  

Нужно из-за:

1. Попрбуйте скомпилировать проект с неиспользуемыми функциями проекта. Будет дофига предупреждений по количеству неиспользуемых функций.

2. Количество массивов на один компилированный файл не более 512. С помощью библиотек можно увеличить это количество.

3. С помощью библиотек можно реализовать одну из парадигм ООП - инкапсуляция.

4. Удобно же, когда на все случаи жизни есть библиотеки, которые протестированы и никогда не подведут. Надо только подключить её заголовочный файл, где уже всё из неё импортировано.

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

hoz
1936
hoz 2013.04.19 11:43  
Zhunko:

Нужно из-за:

1. Попрбуйте скомпилировать проект с неиспользуемыми функциями проекта. Будет дофига предупреждений по количеству неиспользуемых функций.

  Тут логично, НО это же не даст ошибку в работе эксперта, даже если проигнорировать данные предупреждения :) Значит, как я понимаю, это дело визуального комфорта, что мол всё идёт как нужно?

 

Zhunko:

Нужно из-за:

2. Количество массивов на один компилированный файл не более 512. С помощью библиотек можно увеличить это количество.

Это мне не грозит, по-моему количество отдельных массивов 512 это уже слишком.. Даже не представляю проект, где пол тысячи массивов!

 

Zhunko:

Нужно из-за:

4. Удобно же, когда на все случаи жизни есть библиотеки, которые протестированы и никогда не подведут. Надо только подключить её заголовочный файл, где уже всё из неё импортировано. 

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

 

Zhunko:

Нужно из-за:

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

Что Вы имеете ввиду под "вложенными блоками" ? Если не библиотечной, то какой?
Vadim Zhunko
5219
Vadim Zhunko 2013.04.19 17:38  
hoz:

2. Это мне не грозит, по-моему количество отдельных массивов 512 это уже слишком.. Даже не представляю проект, где пол тысячи массивов!

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

5. Что Вы имеете ввиду под "вложенными блоками" ? Если не библиотечной, то какой? 

2. Мне тоже так казалось :-))
4. Можете чего-нибудь случайно испортить. Например, в глобальных переменных что-то исправить, как Вам кажется правильным. Потом замучатесь искать причину. Библиотеу сложенее испортить.
5. Вложенные блоки: {{{{ }}}}. Небиблиотечная эта та, что у вас в инклюде проекта. Библиотечная, что в EX4-файле библиотеки.

================

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

Ещё можно, когда вызывается однократно. В циклах нельзя использовать. Сильно тормознутый код будет.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий