Vim в качестве ide для mql - страница 4

 
Vladimir Simakov:
  1. Препроцессор развивать, тот же #if нужен.


А это разве не то?

Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
  • www.mql5.com
Директивы препроцессора используются компилятором для предварительной обработки исходного кода перед его компиляцией. Директива всегда начинается со знака Каждая директива описывается отдельной записью и действует до переноса строки. Нельзя в одной записи использовать несколько директив. Если запись директивы получается слишком большой, то её...
 
Alexey Viktorov:


А это разве не то?

Мил человек, я про #if писал - его там нет. Учите мат. часть.
 
Vladimir Simakov:
Мил человек, я про #if писал - его там нет. Учите мат. часть.

Ну так объясните разницу. Может и научусь чему-то. А-то так и сдохну неучем...

 
Alexey Viktorov:

Ну так объясните разницу. Может и научусь чему-то. А-то так и сдохну неучем...

https://en.cppreference.com/w/cpp/preprocessor
 

Ну это совсем не серьёзно. Я сдохну раньше чем выучу аглицкий.

 
Alexey Viktorov:

Ну это совсем не серьёзно. Я сдохну раньше чем выучу аглицкий.

К сожалению, все самое лучшее изобретено там, поэтому if you don't know English, so it's your problem. Лично я учу. Те же доки по плюсам в гугл переводе, очень даже обучению способствуют ибо такая хрень с этого переводчика на Русском, что деваться просто некуда. А вот шарпистам с доками повезло, видать Русских в команде разрабов чуть больше, чем до фига)))
 
Alexey Viktorov:

Ну это совсем не серьёзно. Я сдохну раньше чем выучу аглицкий.

если быстро и очень быстро, то #if это проверка условия известного до начала компиляции, а в MQL есть только #ifdef - проверка наличия соответствующего define, т.е. код 

const int x = 2;
#if x>0 #include "lib1.mqh"
#elif   #include "lib2.mqh" 
#endif

не будет работать

но это не точно! ))))   - не люблю макросы, но иногда без них ух как тяжко ((((

 
Igor Makanu:

если быстро и очень быстро, то #if это проверка условия известного до начала компиляции, а в MQL есть только #ifdef - проверка наличия соответствующего define, т.е. код 

не будет работать

но это не точно! ))))   - не люблю макросы, но иногда без них ух как тяжко ((((

Точно не знаю последние стандарты C++, но "#if x>0" вроде нигде не реализовано. Речь по хотелкам обычно идёт примерно о "#if defined DEBUG && defined LEVELS", хотя бы.

 

По поводу редактора последние годы было очень много претензий. Говорить "составьте список" - неправильно. Никто не видит смысл серьёзно засесть и составить такой список, потому что не верит в реакцию.

Для улучшения редактора достаточно начать реализовывать стандартные фичи из популярных IDE.

Навскидку, чего не хватает мне:

Фолдинг кода.

Полный список функций по Alt-M, даже если функции обёрнуты в #ifdef/#endif.

Вызов внешнего стилизатора. Я использую clang. Встроенный меня совершенно не устраивает, это лишь наборы фиксированных настроек.

Контроль внешних изменений открытых файлов.

Более мощные возможности отладки. Например, изменение значений переменных, брекпойнты на изменение переменной (в т.ч. по условию). На "шаг назад" при отладке я уж не надеюсь, это слишком.

Это всё реализовано ещё в мохнатых годах.

 
Edgar Akhmadeev:

Точно не знаю последние стандарты C++, но "#if x>0" вроде нигде не реализовано. Речь по хотелкам обычно идёт примерно о "#if defined DEBUG && defined LEVELS", хотя бы.

#define a 3
#if a<5
...
#endif
Это будет работать. Тут весь цимес в фазах трансляции. Когда работает препроцессор, он ничего не знает о constexpr переменных, т.к. это уже время компиляции.
Причина обращения: