Директивы компилятора

 

Интересно вот узнать есть ли возможность использовать дириктивы компилятора. дабы исключить или включить участки кода

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

 

#include <Имя файла.mqh>

 
KimIV:

#include <Имя файла.mqh>

Ты не понял, надо чтоб я мог написать

if (Условие)

#include <Имя файла.mqh>

и соответсвено по этому условию вызывать или нет ф-ии из этого файла.

 
scorpionk:

Ты не понял, надо чтоб я мог написать
if (Условие)
#include <Имя файла.mqh>
и соответсвено по этому условию вызывать или нет ф-ии из этого файла.

Вызывать ф-ции по условию - пожалуйста. А включать файл нужно всегда.
Если мешают предупреждения компилятора о невызываемых ф-циях, добавьте строку "if ( false ) { вызов всех функций; }", и будет вам счастье ;)
 
komposter:
scorpionk:

Ты не понял, надо чтоб я мог написать
if (Условие)
#include <Имя файла.mqh>
и соответсвено по этому условию вызывать или нет ф-ии из этого файла.

Вызывать ф-ции по условию - пожалуйста. А включать файл нужно всегда.
Если мешают предупреждения компилятора о невызываемых ф-циях, добавьте строку "if ( false ) { вызов всех функций; }", и будет вам счастье ;)


наверне надо прояснить ситуацию. Наверное все помнять тут была статья как вести виртуальную позицию. Тоесть позиция открывается как бы.ю сохраняются ее параметры и тд. но виртуально, ведет ее потом робот. Чтобы все было "красиво" я хочу переопределить все ф-ии которые отвечают за ордера (OrderSend и прочие) на свои, и там в зависимости от условий вызывать свой механизм или вызывать стандартную ф-ию. Хочется сделать это так чтоб безболезнено мона подключить и отключить чтоб модуль не использовался если не нужно, лишнии проверки условия.. к тому же задумал что он будет сохранять все подрять в этот массив с разделением виртуальная сделка или нет. и к тому же сбрасывать все это в файл чтоб можно было инициализировать эту информацию при перезапуске робота.

потому и хочется чтото вроде такого

{$IFDEF использовать=true}

MY_OrderSend();
{$ELSEIF}

OrderSend();

{$ENDIF}

 
scorpionk:

Хочется сделать это так чтоб безболезнено мона подключить и отключить чтоб модуль не использовался если не нужно, лишнии проверки условия..
...
потому и хочется чтото вроде такого

{$IFDEF использовать=true}
MY_OrderSend();
{$ELSEIF}
OrderSend();
{$ENDIF}

А в чем проблема?
Заводите внешнюю переменную EnableVirtualTrading, а потом пишите код для обоих вариантов:
if ( EnableVirtualTrading )
   MY_OrderSend();
else
   OrderSend();

Без подключенной библиотеки так не получится, т.е. "прозрачного" подключения не получится, а отключить можно всегда.
А если надо именно "прозрачный" вариант, загоняйте всю виртуальную торговлю в ex4-library и вызывайте импортируемые функции только при наличии библиотеки.
 
scorpionk:
KimIV:

#include <Имя файла.mqh>

Ты не понял, надо чтоб я мог написать

if (Условие)

#include <Имя файла.mqh>

и соответсвено по этому условию вызывать или нет ф-ии из этого файла.

Всё я понял, просто дал Вам возможность самостоятельно убедиться, что в MQL4 нет директив условной компиляции. Я о них просил около года назад. Мне отказали. Может Вам повезёт...
Причина обращения: