Баг компилятора при параметре шаблона = void* - страница 14

 

Только скобки. Только еноты. Только хардкор !!!11111

#define   cmp(D1,D2)          \
  ((t_flp(D1)||t_flp(D2))?(((D1)>=(D2))?(((D1)-(D2))>=EPS(D1)?1:0):(((D2)-(D1))>=EPS(D1)?-1:0)):(((D1)>(D2))?1:(((D1)<(D2))?-1:0)))
 
Ilya Malev:

Только скобки. Только еноты. Только хардкор !!!11111

Только в #define компилятор соответствующих предупреждений не выдаёт, а тоже не мешало бы

Кстати тут скобки лишние

(((D1)<(D2))?-1:0)
 

В макросах сам бог велел ставить скобки. Там без них никуда.

Igor Makanu:

как и не изменится при портировании кода на другие языки программирования

Разве есть си-подобные языки, в которых эти операторы имеют другой приоритет?  По-моему, это стандарт везде.  А в других языках (например бэйсик или паскаль) твои битовые и условные операторы вообще не действительны.  Так что это всё надуманная проблема.  А то что MQ накосячили с приоритетами в прошлом - это не показатель )

 
A100:

Только в #define компилятор соответствующих предупреждений не выдаёт, а тоже не мешало бы

Ещё как выдает, только сначала нужно его использовать в конкретном коде, причем так выдает, что подсказка ставится не на то место, которое он находит сомнительным, а на место где в коде написан символ из define. Думаю, это типа намек попридержать своих енотов и не насиловать их препроцессор)

 
Ilya Malev:
Кстати, вы в своих кодах пробел принципиально не используете?  Вот здесь ещё пример.  Не представляю, как можно разбираться в таком нагромождении символов, если весь код в таком стиле.
 
Alexey Navoykov:
Кстати, вы в своих кодах пробел принципиально не используете?  Вот здесь ещё пример.  Не представляю, как можно разбираться в таком нагромождении символов, если весь код в таком стиле.

В дефайнах да, не использую, поскольку не считаю их за код, это просто макросы, они должны быть максимально компактными. А этот пример спецом выбран как самый енотоориентированный из всей библиотеки ))

Что касается примера написанного за 2 минуты то там отступы стоят там, где я хотел показать важную часть - вызовы del в OnStart, а остальное было вторично и тут важнее чтобы пост не занимал пол страницы, чем соблюсти отступы.

 
Ilya Malev:

... это просто макросы, они должны быть максимально компактными.

... тут важнее чтобы пост не занимал пол страницы, чем соблюсти отступы.

Что-то мне не понять вашу логику и приоритеты )
 
A100:

А почему Вы их тогда сами не ставите? Не поленился посмотрел у Вас в профиле:

а должно быть так:

Декларируете одно, а сами делаете - ровно наоборот.

Если даже адепты скобок сами их не ставят - то это лучшее подтверждение их ненужности

увы, мой код который Вы привели в пример, был написан мной давно, 4 года назад вроде

мой пост был о том, что я приветствую однозначность в арифметических/логических выражениях и скобки позволяют этого достичь, сейчас я вообще стараюсь писать однозначные условия, мне проще, да и ошибиться невозможно, Вы привели участок кода, где я подсчитывал виртуальные ордера, сейчас я эту задачу пишу так:

allorders = OrdersCount(all_buy,all_sell);
if(allorders==0){
   // если торговля одним ордером выставим ордер и выход
   if(MA1>MA2) { BUY();  return;}
   if(MA1<MA2) { SELL(); return;}
.......   

// или так
   if(all_buy==0){
      if(MA1>MA2) { BUY();  return;}
   }
   if(all_sell==0){
      if(MA1<MA2) { SELL();  return;}
   }

//ф-ция подсчета ордеров
int OrdersCount(int &buy_,int &sell_)
{
   buy_=0; sell_ =0;
.............   
   return(buy_+sell_);

}

я не адепт скобок, а сторонник однозначного чтения алгоритма, который будет читаться один в один как и торговая стратегия 

;)

PS: в холиваре больше не участвую, если даже @fxsaber написал, что скобки помогают избежать ошибок, то даже и обсуждать нечего, ибо писать такие компактные коды как он умеет, на этом форуме этих людей раз два и обчелся, краткость сестра таланта - это про @fxsaber


Ilya Malev:

Только скобки. Только еноты. Только хардкор !!!11111

и тут я понял почему Метаквоты не дают полноценных указателей в MQL.... представил Ваши макросы и код с передачей указателей, разыменованием указателей в функции... хардкор это очень мягко, что там дальше БДСМ? ))))

 
Igor Makanu:

ибо писать такие компактные коды как он умеет, на этом форуме этих людей раз два и обчелся, краткость сестра таланта - это про @fxsaber

Нагромождение лишних скобочек - это сестра таланта? )  Впрочем каждый имеет право на своё мнение.
 
Alexey Navoykov:
Нагромождение лишних скобочек - это сестра таланта? )  Впрочем каждый имеет право на своё мнение.

они не лишние! они помогают прочитать логику формирования этого выражения!

на скорость количество скобок влияет? - ну разве, что на скорость набора текста, но за этим никто не следит.... количество букаф которые настучал каждый юзер за день в инете яркий пример )))