Error del compilador con el parámetro de la plantilla = void* - página 14

 

Sólo paréntesis. Sólo mapaches. Sólo para los más duros!!! 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:

Sólo paréntesis. Sólo mapaches. Sólo para los más duros!!! 11111

Sólo en #define el compilador no genera las advertencias correspondientes, y también estaría bien

Por cierto, los paréntesis son innecesarios aquí.

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

Dios no permita que uses paréntesis en las macros. Allí no se puede prescindir de ellos.

Igor Makanu:

ya que no cambiará al portar el código a otros lenguajes de programación

En otros lenguajes (por ejemplo, BASIC o Pascal) sus operadores condicionales y de bitácora no son válidos, por lo que es un problema espurio y el hecho de que MQ se meta con las prioridades en el pasado no es un indicador).

 
A100:

Sólo en #define el compilador no genera las advertencias correspondientes, lo que tambiénestaría bien

Pero primero hay que utilizarlo en un código específico, y da una pista tal que debe colocarse no en un lugar que considera sospechoso, sino en un lugar donde en el código se escribe el símbolo de definir. Creo que esto es una especie de pista para mantener sus mapaches y no abusar de su preprocesador)

 
Ilya Malev:
Por cierto, ¿no usas espacios en tu código por principio? Aquí tienes otro ejemplo. No sé cómo puede tener sentido semejante batiburrillo de caracteres si todo el código es de ese estilo.
 
Alexey Navoykov:
Por cierto, ¿no usas espacios en tu código? Aquí tienes otro ejemplo. No sé cómo se puede entender semejante cúmulo de caracteres si todo el código es de este estilo.

En defines, sí, no las uso, porque no las considero como código, son sólo macros, deben ser lo más compactas posible. Y este ejemplo ha sido especialmente elegido por ser el más mapache de toda la biblioteca ))

En cuanto al ejemplo, escrito en 2 minutos, la sangría está ahí, donde quería mostrar la parte importante - las llamadas del en OnStart y el resto era secundario y es más importante que el post no ocupe media página, que mantener la sangría.

 
Ilya Malev:

... son sólo macros, deben ser lo más compactas posible.

... Es más importante que el post no ocupe media página que que esté sangrado.

No entiendo su lógica y sus prioridades )
 
A100:

¿Por qué no las pones tú mismo? No me he molestado en mirar su perfil:

Se supone que es así:

Declaras una cosa, pero haces exactamente lo contrario.

Si ni siquiera los partidarios de los corchetes los ponen ellos mismos, esa es la mejor prueba de su inutilidad

Desgraciadamente, mi código, que has citado como ejemplo, lo escribí yo hace tiempo, creo que hace 4 años.

Mi post trataba de dar la bienvenida a la no ambigüedad en las expresiones aritméticas/lógicas y los paréntesis permiten conseguirla, ahora generalmente intento escribir condiciones no ambiguas, me resulta más fácil, y es imposible equivocarse, has citado un fragmento de código donde calculaba órdenes virtuales, ahora escribo este problema de esta manera:

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_);

}

No soy un adepto de los paréntesis, pero soy partidario de un algoritmo de un solo valor, que se leerá de la misma manera que una estrategia comercial

;)

PD: No voy a participar más en este coro, aunque@fxsaber haya escrito que los paréntesis ayudan a evitar errores, entonces no hay nada que discutir, porque él sabe escribir códigos tan compactos, sólo hay dos veces más de esta gente en este foro, la brevedad es la hermana del talento - se trata de@fxsaber


Ilya Malev:

Sólo paréntesis. Sólo mapaches. Sólo el hardcore !!!11111

Y entonces entendí por qué las Metacomillas no dan punteros completos en MQL.... ilustró sus macros y su código con el paso de punteros, la desreferenciación de punteros en funciones... El hardcore es muy suave, ¿qué es lo siguiente BDSM? ))))

 
Igor Makanu:

Porque es capaz de escribir códigos tan compactos, sólo hay un puñado de personas así en este foro, la brevedad es la hermana del talento - se trata de@fxsaber

(¿Los paréntesis apilados sobre los paréntesis son la hermana del talento? ) Bueno, todo el mundo tiene derecho a opinar.
 
Alexey Navoykov:
(¿Es la hermana del talento estar llena de paréntesis innecesarios? ) Pero todo el mundo tiene derecho a opinar.

¡no son superfluas! ¡ayudan a leer la lógica de cómo se forma la expresión!

¿el número de soportes afecta a la velocidad? - a menos que afecte a la velocidad de escritura, pero nadie lo ve.... el número de paréntesis que cada usuario en un día en internet es un ejemplo llamativo ))))