#define как с ними работать ? - страница 3

 
Vladimir Pastushak:

Собственно вопрос в теме. Никогда ранее не интересовался дефайнами, теперь хочу освоить.

Можно пару простых и пару сложных примеров ?

Больше интересует вопрос по скорости работы, есть ли смысл работать с дефайнами ?

В справке не нашёл примера создания функции, то же хотелось бы увидеть пример.

Дефайны нужны, чтобы было сразу понятно, что за величина используется в коде.

Скажем, код удаления ордеров _OrdersDelete(5) будет непонятен, когда ты будешь разбираться в коде через полгода. Почему пять ?

А вот код _OrdersDelete(MAX_QUEUE_ORDERS) - напомнит тебе, что пять - это максимальное количество ордеров в очереди, скажем, при мартине.


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

Правда, дефайн определяется одной строкой, а статическая константа - двумя (объявление и определение), но на мой взгляд, она все-таки гораздо более предпочтительна.

 

Если компиляция выполнена с включением отладочной информации, то замедление существенное - с 0 секунд до 186  для n++, до 487 для f() на цикл:


2017.07.27 22:16:08.579 callf (MXI-9.17,M15) time for n++:186 n=10000000000

2017.07.27 22:24:15.899 callf (MXI-9.17,M15) time for f():487 n=20000000000


 
Aleksey Sergan:

Если компиляция выполнена с включением отладочной информации, то замедление существенное - с 0 секунд до 186  для n++, до 487 для f() на цикл:


2017.07.27 22:16:08.579 callf (MXI-9.17,M15) time for n++:186 n=10000000000

2017.07.27 22:24:15.899 callf (MXI-9.17,M15) time for f():487 n=20000000000



То же самое и с другими компиляторами, например MS C++, за все надо платить

 
Vladimir Pastushak:  Собственно вопрос в теме. Никогда ранее не интересовался дефайнами, теперь хочу освоить.

Можно пару простых и пару сложных примеров ?

#define Покупка 1
#define Продажа 2

      if(Close[cnt]<Выбор1 && Направление == Покупка)
      {
         Направление = Продажа;
      }

или еще

#define Ar SetIndexArrow

void init()
{
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,2); Ar(0,233);
Причина обращения: