Ожидалось что если макрос в конкретной строке определен - то он подсвечивается, не определен - не подсвечивается. Иначе не понятно что означает наличие\отсутствие подсветки
//Test.cpp#include "Test.h"#ifdef MACRO //не подсвечивается... но этот .cpp файл не предназначен для компиляции в MetaEditor,//а компилируется в С\С++, где макрос __MQL__ не является предопределенным//в результате подсвечивается то что не должно и наоборот не подсвечивается что должно#endif
Это случай (как и предыдущий) когда неправильная подсветка, вводящая в заблуждение, много хуже, чем ее отсутствие
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
Неоднократно встречал на форуме обсуждение пользователей об отсутствие в MetaEditor предопределенного макроса, аналогичного _WIN64. Ответ администрации был, что нет необходимости, поскольку MetaEditor генерирует универсальный одновременно 32-64-х разрядный код.
И действительно, если использовать готовую .dll (которую уже нельзя изменить) то без дополнительного выравнивания не обойтись. Но в x86 и x64 это дополнение может выглядеть по разному, а значит необходимость в аналоге _WIN64 все-таки есть, поскольку структура задается на этапе компиляции .mq5 файла где TerminalInfoInteger( TERMINAL_X64 ) не работает
//Test.mq5
#ifdef _WIN64
#define ALIGN (8-2) //добавить к элементу структуры 6 байт
#else
#define ALING (4-2) //добавить к элементу структуры 2 байта
#endif
Сейчас нужно лишнюю информацию держать в уме. В результате экономии на пустяке есть риск получить трудноуловимую ошибку
Запутанная подсветка макросов - не зависит от контекста
либо всегда присутствует (вариант B) либо всегда отсутствует (вариант A)
Ожидалось что если макрос в конкретной строке определен - то он подсвечивается, не определен - не подсвечивается. Иначе не понятно что означает наличие\отсутствие подсветки
Это на сайте? Движок на сайте не может распознавать пользовательские макросы в кодах
Такая же проблема
Рекурсия?
Такая же проблема
IndicatorRelease();
Ошибка при компиляции
Необходимо компилировать прикрепленный файл
Где я взял такие "пробелы"? Здесь их много https://www.mql5.com/ru/docs/check/terminalinfointeger. Копировал фрагмент в Microsoft Edge при помощи мыши
Запутанная подсветка макросов - не зависит от контекста
либо всегда присутствует (вариант B) либо всегда отсутствует (вариант A)
Ожидалось что если макрос в конкретной строке определен - то он подсвечивается, не определен - не подсвечивается. Иначе не понятно что означает наличие\отсутствие подсветкиПодсветка С\С++ файлов в MetaEditor
https://www.mql5.com/ru/docs/basis/preprosessor/constant
Ожидалось что указанные макросы (а также __MQL__) не будут доступны при подсветке файлов с расширениями .c, cpp, .h
Это случай (как и предыдущий) когда неправильная подсветка, вводящая в заблуждение, много хуже, чем ее отсутствие
Неоднократно встречал на форуме обсуждение пользователей об отсутствие в MetaEditor предопределенного макроса, аналогичного _WIN64. Ответ администрации был, что нет необходимости, поскольку MetaEditor генерирует универсальный одновременно 32-64-х разрядный код.
В то же время многие используют выравнивание https://www.mql5.com/ru/forum/225498/page2#comment_6401835 путем дополнения полей структуры
И действительно, если использовать готовую .dll (которую уже нельзя изменить) то без дополнительного выравнивания не обойтись. Но в x86 и x64 это дополнение может выглядеть по разному, а значит необходимость в аналоге _WIN64 все-таки есть, поскольку структура задается на этапе компиляции .mq5 файла где TerminalInfoInteger( TERMINAL_X64 ) не работает
Сейчас нужно лишнюю информацию держать в уме. В результате экономии на пустяке есть риск получить трудноуловимую ошибку
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2016.08.25 12:32
Ошибка выполнения в режиме Optimize=1 и/или дебага.
Ошибка при выполнении
Результат: AAACCCBBB
Ожидалось: AAABBBCCC
Ошибка при компиляции
Запутанная подсветка макросов - не зависит от контекста
либо всегда присутствует (вариант B) либо всегда отсутствует (вариант A)
Ожидалось что если макрос в конкретной строке определен - то он подсвечивается, не определен - не подсвечивается. Иначе не понятно что означает наличие\отсутствие подсветкиЭто на сайте? Движок на сайте не может распознавать пользовательские макросы в кодах