Еще одна причина ввода #ifdef - большая защищенность программ. Рассмотрим пример 1 и 2:
void main()
{
#ifdef DEMO
Print("Эта функция не работает в демо режиме")
return;
#endif
#ifndef DEMO//Здесь выполняется реальный функционал
...
...
...
#endif
}
//Теперь этаже функция без #ifdef#define DEMO 1void main()
{
if(DEMO == 1)
Print("Эта функция не работает в демо режиме")
return;
//Сдесь выполняется реальный функционалelse
{
...
...
...
}
}
В первом случае функционал в демо версии физически будет отсутствовать, а значит его принципиально невозможно будет сломать (нельзя сломать то, чего нет). Во второй версии функционал будет присутствовать, и все что нужно, это заменить инструкцию
if(DEMO == 1)
на
if(DEMO != 1), зная код инструкции, не проблема это сделать в любом HEX-редакторе.
MQL5: Исправлена ошибка, препятствовавшая тестированию экспертов, содержащих пользовательские индикаторы в виде ресурса. Ошибка затрагивала в том числе и экспертов из
MQL5 Market.
MQL5: Добавлена поддержка условной компиляции #if[n]def, #else и #endif.
MQL5: Добавлены макросы _DEBUG и _RELEASE, при компиляции *.mq5 макрос __MQL5__, при компиляции *.mq4 __MQL4__.
Market: Оптимизирована работа с MQL5 Market при использовании нескольких экземпляров клиентского терминала.
MetaTester: Исправлен показ вкладок и результатов тестирования при тестировании индикатора.
MetaTester:
Исправлено отображение подписей при использовании курсора в режиме
"перекрестие" для замера расстояния между барами в режиме визуального
тестирования.
MetaTester: Исправлено падение тестера при завершении тестирования.
Еще одна причина ввода #ifdef - большая защищенность программ. Рассмотрим пример 1 и 2:
В первом случае функционал в демо версии физически будет отсутствовать, а значит его принципиально невозможно будет сломать (нельзя сломать то, чего нет). Во второй версии функционал будет присутствовать, и все что нужно, это заменить инструкцию if(DEMO == 1) на if(DEMO != 1), зная код инструкции, не проблема это сделать в любом HEX-редакторе.Причин много.. Но ведь таки решение принято? Расслабиться уже можно.
Очень хорошо.
Ещё бы хотелось предопределённую константу, которая указывает разрядность MT.
Например так: __X64__ .
она почти такая и есть.
с самого начала
причем в двух вариантах.
Renat:
После обсуждения мы приняли решение в следующих билдах (не в ближайшем) добавить #ifdef
Оооо !!! Премного благодарен.
Будет крутой код, который работает без изменений в MT4,МТ5 и в С# под WLD...
она почти такая и есть.
с самого начала
причем в двух вариантах.
Я имел ввиду константу, которую можно использовать в #ifdef.
Есои она такая есть, а я почемуто не увидел, прошу привести ссылку.
Я имел ввиду константу, которую можно использовать в #ifdef.
Есои она такая есть, а я почемуто не увидел, прошу привести ссылку.
такой нет. имеющаяся константа выглядит BOOL типа, то есть она только для #if конструкции
а конструкцию #if у разрабов не просили... :( обломс.
такой нет. имеющаяся константа выглядит BOOL типа, то есть она только для #if конструкции
а конструкцию #if у разрабов не просили... :( обломс.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Список изменений в билдах MetaTrader 5 Client Terminal
MetaQuotes, 2013.11.02 08:16
MetaTrader 5 Client Terminal build 871
Обновление доступно через систему LiveUpdate.
Спасибо за новость :)
Это для истории, чтоб были видны результаты подобных веток.
Понятно, что те, кому надо, узнали сами ;)