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

 
A100:

Si no lo he expresado correctamente -por favor, corríjanme-, he expuesto mi concepto de forma breve y sin ambigüedades donde es necesario advertir sobre los paréntesis

No es correcto. El uso de paréntesis reduce la probabilidad de errores.

Una advertencia es un mensaje de que relativamente muchos codificadores cometen errores al escribir de esta manera: el resultado no es el que pretendían. Esto se aplica a todas las advertencias, no sólo a los corchetes.

 
fxsaber:

No es así. El uso de paréntesis reduce la posibilidad de errores.

Una advertencia es un mensaje de que relativamente muchos codificadores cometen errores al escribir de esta manera: el resultado no es el que pretendían. Esto se aplica a todas las advertencias, no sólo a los corchetes.

No se trata de un concepto, sino de un razonamiento general.

La pregunta es de carácter práctico y no es de carácter abstracto sino muy concreto: ¿dónde se necesitan los paréntesis? ¿En todas partes? ¿O selectivamente? Entonces, ¿quién determina la selección? ¿El fxsaber? ¿Puede formularlo de forma inequívoca? Para que este concepto pueda ser implementado en el compilador

Lo expresé como: "sólo donde no se puede prescindir".

 
pavlick_:

ZS: pero si lo hiciera, lo haría lo más parecido posible a la biblioteca estándar plus (nombres, comportamiento, etc.), así que no me queda más remedio. ¿Por qué construir otra especificación cuando todo está ya escrito?

Si lo hiciera, las matrices de objetos y punteros no son necesarias en mql en absoluto. Las listas dinámicas y los bucles for each como for each permiten resolver el 99% de las tareas en el comercio de la forma más compacta y conveniente. Ni siquiera se necesita una clase de lista separada. Todas estas características adicionales son necesarias a una escala mayor de la que solemos tener aquí...

 
A100:¿Puede articularse de forma inequívoca?

donde facilitan la comprensión del código

 
TheXpert:

donde facilitan la comprensión del código

Para que el concepto pueda ser implementado en el compilador. Nadie prohíbe los paréntesis innecesarios. La pregunta es sobre las advertencias innecesarias

 
A100:

La cuestión es práctica, no abstracta, sino concreta: ¿dónde se necesitan los soportes? ¿En todas partes? ¿O selectivamente? Entonces, ¿quién determina la selección? ¿El fxsaber? ¿Puede formularlo de forma inequívoca?

La pregunta era si el compilador de MT4 es correcto

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Nueva versión de la plataforma MetaTrader 5 build 1930: ventanas de gráficos flotantes y bibliotecas .Net en MQL5

fxsaber, 2018.12.11 19:44

#property strict
   // from MT5: Canvas.mqh
   uint Pixel = (r<<16|g<<8|b<<0|255<<24) &0xffffffff; //check operator precedence for possible error; use parentheses to clarify precedence


En este caso, sí. Los paréntesis no son necesarios aquí, pero sí deseables, ya que es probable que haya un error. Es sobre la base de tales probabilidades que el compilador emite advertencias de cualquier tipo. Se inventaron por una razón.

 
fxsaber:

En este caso, tiene razón.

En esta fase no es necesario dar ejemplos concretos (puede dar todos los que quiera). Lo que se necesita es un único concepto que se pueda implementar en el compilador (cuando se deben emitir advertencias si faltan paréntesis)

 
A100:

No es necesario dar ejemplos concretos en esta fase (puedes dar todos los que quieras). Lo que se necesita es un concepto que se pueda implementar en el compilador

Ya está bastante bien implementado. Es que MT4 resultó ser más inteligente.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Nueva versión de MetaTrader 5 build 1930: Ventana de gráfico flotante y biblioteca .Net en MQL5

fxsaber, 2018.12.11 20:22

No son mensajes redundantes en absoluto. Siempre hay prioridades.

bool a = r && g || b; // check operator precedence for possible error; use parentheses to clarify precedence

El compilador ya advierte a los cincos de un posible error también.

 
fxsaber:

Ya está bastante bien implementado. Es que MT4 resultó ser más inteligente.

Esta advertencia se hizo sólo porque MQL5 tiene diferentes prioridades. No porque. ..

Es decir, el concepto: "Las advertencias son probablemente necesarias en aquellos lugares donde MQL4 era diferente antes". De este modo, los promotores han corregido sus errores anteriores. no más que eso

 
Sería más conveniente que el compilador ofreciera ordenar automáticamente los paréntesis "correctamente", de forma similar a como lo hace Excel cuando se escribe una fórmula incompleta.
Razón de la queja: