| / | Форум |
|
Mathemat
02.07.2007 13:41
Проблема такова. Пишу скрипт (пока скрипт) с вычислениями, аналогичными тем, которые будут в советнике. Вычисления там серьезные, и мне уже надоело возиться с трудно обозримым кодом, объем которого приближается к тысяче строк. Решил вынести часть специфично вычислительных функций в библиотеку. Но проблема в том, что эти функции используют глобальные переменные (и глобальные пользовательские массивы) скрипта. Теоретически можно было бы увеличить количества параметров функций, выносимых в библиотеку, за счет добавления параметров, фактически являющихся глобальными в основном модуле. Но объявления функций становятся очень громоздкими. Не хочется так, некрасиво. Получается, что эти глобальные переменные надо объявлять внутри библиотеки, включая и #define. ОК, допустим. С заголовочным файлом возиться не хочется, так как фактически он дублирует библиотечный, и поэтому я просто решил добавить инструкцию #import непосредственно в скрипт. Так вот, нужно ли дублировать внутри этой инструкции объявления глобальных переменных, сделанных теперь уже в библиотеке? Какие тут могут быть подводные камни? Или все же лучше просто запихнуть все нужные глобальные переменные скрипта в функции библиотеки как параметры и не париться, сделав их "автономными"? |
|
Строки: таблица символов ASCII и её использование В этой статье мы детально рассмотрим таблицу символов ASCII и как её можно использовать. Также мы рассмотрим несколько новых функций, принцип работы которых основан на специфике строения таблицы ASCII, и в конце создадим новую библиотеку, в которую включим эти функции. Они достаточно популярны в других языках программирования, но их нет среди встроенных функций. Кроме того мы очень детально разберём основы работы со строками, так что, я думаю, вы обязательно узнаете что-нибудь новое про этот полезный тип данных. |
3176 |
Renat
02.07.2007 15:08
Лучше используйте включение исходников библиотеки через include,
а не через import из EX4 с динамическим связыванием и потерями в
скорости.
|
|
Mathemat
02.07.2007 15:35
Спасибо, Renat, о самом простом способе я и не подумал...
|
|
komposter
02.07.2007 15:53
Использовать библиотеку, как по мне, есть смысл только если не
хочешь выкладывать открытый код, или если нет возможности скомпилировать
эксперта, использующего библиотечные функции.
В остальных случаях удобнее #include - получается тот же код, но разделенный на несколько файлов. PS: в каждый из второстепенных включаемых файлов можно вставить строку "#include <главный включаемый файл.mq4>", и тогда их можно будет компилировать ;) |
|
Aleksey24
02.07.2007 15:57
Mathemat писал (а):
Спасибо, Renat, о самом простом способе я и не подумал...
:) |
|
granit77
02.07.2007 19:11
Aleksey24 писал (а): В такой веселой доброжелательной манере молодые дарования проявляют
благодарность своим менторам!Стареешь, Mathemat!
:) |
|
chv
02.07.2007 21:40
Mathemat писал (а): Вычисления там серьезные, и мне уже надоело возиться с трудно обозримым кодом, объем которого приближается к тысяче строк. Да уж. Глянул я на эксперта в 15,5 тыс. строк кода и подумал, как мозг и компилятор это всё тянут ;) |
|
Mathemat
02.07.2007 23:18
komposter писал (а): А когда нет такой возможности? Когда не хватает самих библиотек?Использовать библиотеку, как по мне, есть смысл [...] если нет возможности скомпилировать эксперта, использующего библиотечные функции. Aleksey24 писал (а): Стареешь, Mathemat! :) Вот решу круглое уравнение - тогда и посмотрим, у кого больше ехидства осталось, хе-хе... |
|
komposter
03.07.2007 00:48
Mathemat писал (а): Например, есть скомпилированный эксперт без исходника и библиотека
в исходниках.komposter писал (а): А когда нет такой возможности? Когда не хватает самих библиотек?Использовать библиотеку, как по мне, есть смысл [...] если нет возможности скомпилировать эксперта, использующего библиотечные функции. Тогда функции, которые есть в библиотеке, можно менять (кроме имен и списка параметров), и эксперт их будет использовать. |
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий