Спасибо за сообщение.
В текущей версии MQL, развёртываемый макрос, не помечается как отсутствующий, отсюда данная ошибка и ограничение в глубину при развертывании макросов.
Т.е. по приведённому коду, при развёртывании макроса F, сам макрос F должен "притворится" необъявленным, тогда при развёртывании макроса M, F(a,0) окажется вызовом, а не макросом F (при чём развёртываемом рекурсивно)
Буду исправлять.
Ну с той же оперы примерно
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
pavlick_, 2018.12.05 05:00
#define M (a ? 1 : 0) struct S { int a; }; void OnStart() { S s; #define a s.a Alert(M); }
Скомпилировать не удаётся, ошибки:
'a' - too complex, simplify the macro temp.mq5 24 10
's' - struct member undefined temp.mq5 24 10
...
Т.е. препроцессор, видимо, пытается рекурсивно раскрыть a.
Исправления внесены.
Оба приведённых кода компилируются без ошибок.
Ограничил вложенность раскручиваемых макросов до 64 (в последней ревизии было 16, изначально 8).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Билд 1966, 64 бит. Ошибка в макросах:
В C++ работает корректно.