Особенности языка mql5, тонкости и приёмы работы - страница 121
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тогда не понимаю этого
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Alexey Navoykov, 2019.01.14 16:35
Ну если есть в этом потребность, то можно и в C++ объявить void OnTick(); в самом начале. Но вообще порядок объявления функций - это дополнительный способ контроля правильности кода. Вот если допустим у тебя в каком-то подключаемом инклуднике случайно окажется вызов OnTick() или ещё хуже - OnInit() - разве это хорошо? Библиотеки не должны видеть твой рабочий код.Тогда не понимаю этого
ну ошибся. форвард декларации есть только для классов, структур, для функций нет.
В том то и дело, что если в инклуде заданы функции, которые собрался использовать, то по предложенному нужно их прописывать, если инклуд стоит ниже.
А какая проблема вставить инклудник раньше?
Это для одного файла может быть неудобно (функция с телом обязательно до вызова), но если функция в mqh - в чем проблема вставить инклуд в самом начале?
ну ошибся. форвард декларации есть только для классов, структур, для функций нет.
Отлично, что уточнили.
А какая проблема вставить инклудник раньше?
Это для одного файла может быть неудобно (функция с телом обязательно до вызова), но если функция в mqh - в чем проблема вставить инклуд в самом начале?
Некоторые конструкции с макросами иногда требовали инклуда в последней строке. Конкретно пример не приведу, на практике сталкивался неоднократно.
ну ошибся. форвард декларации есть только для классов, структур, для функций нет.
Некоторые конструкции с макросами иногда требовали инклуда в последней строке. Конкретно пример не приведу, на практике сталкивался неоднократно.
Ну это уже что-то совсем экзотическое. Не думаю, что отдельно взятые макросы стоят того, чтобы ради них жертвовать правильностью архитектуры.
Впрочем ладно, это уже второстепенный вопрос. Как бы то ни было, код программы в любом случае должен выполняться точно в соответствии с заложенным в него алгоритмом. Доступ к переменной раньше её инициализации - это нонсенс. Такое не должно компилироваться.
Кстати, если в инклуде используются какие-то функции, которых там нет, то они всё-равно должны быть объявлены там. Так же как и классы, и extern-переменные. Иначе это уже какой-то костыль, а не инклуд.
Соответственно инклуд не должен зависеть от того, в каком месте программы он вставлен.
Кстати, если в инклуде используются какие-то функции, которых там нет, то они всё-равно должны быть объявлены там. Так же как и классы, и extern-переменные. Иначе это уже какой-то костыль, а не инклуд
А что такое, по-Вашему, инклуд? Для меня это просто кусок текста, выделенный в отдельный файл. И повторное его включение в исходник игнорируется. Больше ничего.
А что такое, по-Вашему, инклуд? Для меня это просто кусок текста, выделенный в отдельный файл. И повторное его включение в исходник игнорируется. Больше ничего.
Ну я считаю, это должен быть самостоятельный независимый код. Так и по смыслу логичней, и контролировать легко, и выполнять независимую проверку синтаксиса этого кода. А если всё разбросано по файлам и не понятно что откуда вызывается - это ж хаос какой-то.
Ну я считаю, это должен быть самостоятельный независимый код. Так и по смыслу логичней, и контролировать легко, и выполнять независимую проверку синтаксиса этого кода. А если всё разбросано по файлам и не понятно что откуда вызывается - это ж хаос какой-то.
Примеры своего кода выкладывал. Про хаос отзывов слышать не приходилось даже для инкудников, что не компилируются.