компилируем библиотеку, получаем ошибку
#include не библиотеки, а подключаемые файлы
сложно предположить где нужен такой хук ?
на всякий случай с форвард описанием - пользуюсь, считаю, что иногда удобно:
#include <ProjectTestInc.mqh> class CGlobal { public: static string func() { return "OK"; } }; //+------------------------------------------------------------------+ void OnInit() { myFunc(); } //+------------------------------------------------------------------+ void OnDeinit( const int Reason ) { } //+------------------------------------------------------------------+ void OnTick() { }
ProjectTestInc.mqh
class CGlobal; void myFunc() { Print(CGlobal::func()); }
Спасибо за идею с форвардом! )
>> Cложно предположить где нужен такой хук ?
Вот, к примеру, одно предположение. При разветвленной системе подключаемых файлов ;) эта возможность становится чрезвычайно полезной. В таких проектах нет необходимости связывать каждый .mqh, где идет обращение к глобальным переменным, с файлом, в котором они заведены - прозрачность обеспечивается зависимостями, указанными в mqproj
Вообще, в справке об этом напрямую ни слова, лишь одно предложение, вроде "в секции Dependencies проекта собраны все подключаемые файлы".
Выходит, что возможность из серии недокументированных, а значит полагаться на подобный "хук", как вы говорите, можно лишь на свой страх и риск.
Спасибо за идею с форвардом! )
>> Cложно предположить где нужен такой хук ?
Вот, к примеру, одно предположение. При разветвленной системе подключаемых файлов ;) эта возможность становится чрезвычайно полезной. В таких проектах нет необходимости связывать каждый .mqh, где идет обращение к глобальным переменным, с файлом, в котором они заведены - прозрачность обеспечивается зависимостями, указанными в mqproj
Вообще, в справке об этом напрямую ни слова, лишь одно предложение, вроде "в секции Dependencies проекта собраны все подключаемые файлы".
Выходит, что возможность из серии недокументированных, а значит полагаться на подобный "хук", как вы говорите, можно лишь на свой страх и риск.
А лучше так никогда не делать. Меньше проблем себе создадите.
Подключаемый файл не должен знать о переменных, объявленных в других файлах.
А лучше так никогда не делать. Меньше проблем себе создадите.
Подключаемый файл не должен знать о переменных, объявленных в других файлах.
Как раз, за исключением проекта. Там, зачастую, удобнее глобальные переменные в отдельный файл выделить.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте все )
Вот, стало интересно, знает ли кто-то кроме меня, об одной интересной особенности проектов
Пишем код
пишем библиотеку ProjectTestInc.mqh
void myFunc() { gVariable.func(); }
компилируем библиотеку, получаем ошибку
'gVariable' - undeclared identifier ProjectTestInc.mqh 4 4
Теперь оборачиваем код в проект. Заходим в ProjectTestInc.mqh из проекта и, о чудо! Теперь глобальная переменная видна )