если верно понял, всё равно желательно ставить guard`s и остаются ещё особые требованию к коду ?
В своих заголовочных файлах - да, guard'ы нужны. Мы ведь первым этапом прогоняем через шланг, он составляет большую портянку из всех инклудов и это уже идёт к мкл компилятору. Без гуардов будут повторяться определения и мкл компилятор выдаст ошибки.
Из требований по коду, да только одно в принципе - специфичные мкл директивы препроцессора упаковываем так
#ifndef VIM
mqlcpp_#import jkjkjk.dll
#endif
void fn_from_jkjkjk_dll();
ну дабы об этот импорт не споткнулся clang при анализе и компиляции. Если mql специфичная конструкция, но не директива препроцессору, то без mqlcpp_ (можно и не делать, но с точки зрения шланга это какая-то ошибка)
#ifndef VIM
inputint MA_Period=13; // Ну или INPUT макросinputint MA_Shift=0;
#else
int MA_Period=13;
int MA_Shift=0;
#endif
Разыменовывать ли указатели через -> и ставить ли & перед массивами - на выбор, но следование с++ стилю даст лучшую поддержку со стороны clang.
ЗЫ: кстати, не рассказал как определяется "первая компиляция" в контексте добавления guard'ов. Смотрится Include/Object.mqh и если там не находим гуард, то компилция первая. Ещё бы хотел добавить возможность формировать черный список для тупых ворингов.
А вообще вопросы неправильные у вас появились, интереснее другие - я вот за пару дней на коленках сделал ide со всеми плюшками и значительно более высоким качеством нежели метаэдитор ...
Да... С такими возможностями и операционку за неделю легко написать.) Бывает, тоже люблю приукрасить, но чтоб настолько...))
Может дело в общедоступном фреймворке, что позволяет собирать ПО на уровне пазлов? Ну, тогда каждый пусть себе слепит IDE по вкусу и юзает.))
...Остальные и дальше будут молиться на МК, покорно ставить амперсанды перед массивами и разыменовывать через точку.
Что касается точки, это ведь удобней и лаконичней, плюс совместимость с ООП языками. Я вот наоборот часто думал, что было бы неплохо чтоб в С++ сделали такую же возможность. Есть и оборотная сторона конечно, но всё ж плюсов больше, я считаю
Alexey Navoykov: Что касается точки, это ведь удобней и лаконичней, плюс совместимость с ООП языками. Я вот наоборот часто думал, что было бы неплохо чтоб в С++ сделали такую же возможность. Есть и оборотная сторона конечно, но всё ж плюсов больше, я считаю
Тогда надо будет выкинуть умные указатели, итераторы, ... . Нужно же как-то различать вызов функции самого указателя и указываемого типа
Alexey Navoykov: Не путайте обычную автозамену текста в файле с контекстно-ориентированной заменой.
И зачем она? На случай, если в одном файле одинаково названы переменные с разным контекстом? Замена по смыслу, а не тексту? Будьте добры, поясните где и зачем использовать. Вдруг, всем нужно, а кто то не знает.
Реter Konow: И зачем она? На случай, если в одном файле одинаково названы переменные с разным контекстом? Замена по смыслу, а не тексту? Будьте добры, поясните где и зачем использовать. Вдруг, всем нужно, а кто то не знает.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
если верно понял, всё равно желательно ставить guard`s и остаются ещё особые требованию к коду ?
В своих заголовочных файлах - да, guard'ы нужны. Мы ведь первым этапом прогоняем через шланг, он составляет большую портянку из всех инклудов и это уже идёт к мкл компилятору. Без гуардов будут повторяться определения и мкл компилятор выдаст ошибки.
Из требований по коду, да только одно в принципе - специфичные мкл директивы препроцессора упаковываем так
ну дабы об этот импорт не споткнулся clang при анализе и компиляции. Если mql специфичная конструкция, но не директива препроцессору, то без mqlcpp_ (можно и не делать, но с точки зрения шланга это какая-то ошибка)
Разыменовывать ли указатели через -> и ставить ли & перед массивами - на выбор, но следование с++ стилю даст лучшую поддержку со стороны clang.
ЗЫ: кстати, не рассказал как определяется "первая компиляция" в контексте добавления guard'ов. Смотрится Include/Object.mqh и если там не находим гуард, то компилция первая. Ещё бы хотел добавить возможность формировать черный список для тупых ворингов....
А вообще вопросы неправильные у вас появились, интереснее другие - я вот за пару дней на коленках сделал ide со всеми плюшками и значительно более высоким качеством нежели метаэдитор ...
Читал, читал....
Надоело смотреть на эти выпендрежи.
Все эти штучки вобще не нужны трейдеру, который пишет торговую стратегию для себя.
А уж на заказ тем более, т.к. заказывают в основном новички. Там заказы из серии детской невинности, которые реализовываются в несколько строк кода.
Конечно же понравилось то, что планируется поддержка питона.
Это - да, вполне полезная доработка.
...Остальные и дальше будут молиться на МК, покорно ставить амперсанды перед массивами и разыменовывать через точку.
Точно! Сколько имен переменных и функций так поменял. Немного дольше чем в VS, но контроля больше.
Что касается точки, это ведь удобней и лаконичней, плюс совместимость с ООП языками. Я вот наоборот часто думал, что было бы неплохо чтоб в С++ сделали такую же возможность. Есть и оборотная сторона конечно, но всё ж плюсов больше, я считаю
Тогда надо будет выкинуть умные указатели, итераторы, ... . Нужно же как-то различать вызов функции самого указателя и указываемого типа
Точку нельзя перегружать, т.е. гарантированно доступ к внутренностям.
А уж на заказ тем более, т.к. заказывают в основном новички. Там заказы из серии детской невинности, которые реализовываются в несколько строк кода.
Уж трейдеру точно плевать на заказы, я пишу для себя, поделился с такими же, а не со всякой околорыночной публикой.
Тогда надо будет выкинуть умные указатели, итераторы, ... . Нужно же как-то различать вызов функции самого указателя и указываемого типа
Точку нельзя перегружать, т.е. гарантированно доступ к внутренностям.
Не путайте обычную автозамену текста в файле с контекстно-ориентированной заменой.
И зачем она? На случай, если в одном файле одинаково названы переменные с разным контекстом? Замена по смыслу, а не тексту? Будьте добры, поясните где и зачем использовать. Вдруг, всем нужно, а кто то не знает.
Ну вы всё верно поняли в принципе.