Características del lenguaje mql5, sutilezas y técnicas - página 202
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Las funciones estándar reciben los argumentos de izquierda a derecha.
Las funciones personalizadas reciben los argumentos de derecha a izquierda.
Resultado.
¿Es así como debe ser?
¿Es así como debe ser?
Se trata de un LU en el que no se puede confiar. Es decir, hay que evitar explícitamente las situaciones en las que la lógica de un programa depende del orden en que se evalúan los argumentos
Las funciones del personal reciben los argumentos de izquierda a derecha.
He aquí un ejemplo de refutación:
Resultado: 2 1
Se trata de un LU en el que no se puede confiar. Es decir, debemos evitar explícitamente las situaciones en las que la lógica de un programa depende del orden en que se evalúan los argumentos
He aquí un ejemplo de refutación:
Resulta que todo es inestable con las personalizadas. Con las personalizadas, todo es inestable desde el principio.
Resulta que todo es inestable con los estándar. Con las personalizadas, es inequívoco desde el principio.
La diferencia es que hay funciones regulares (de derecha a izquierda) y funciones inline (orden indefinido).
las funciones inline no son funciones en absoluto, es decir, no pueden tener una dirección. Desde este punto de vista, no hay diferencia entre las funciones regulares y las personalizadas, así que, por ejemplo, no está claro por qué los argumentos de la función personalizada más sencilla (que en esencia es inline) se calculan siempre de derecha a izquierda. No excluyo que en el futuro para las funciones en línea el orden pueda cambiar, así que
En su día sugerí introducir una palabra clave inline para el uso seguro del orden de los cálculos:
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Errores, fallos, preguntas
A100, 2017.10.05 14:30
Esto demuestra una vez más la utilidad de la palabra clave inline de C++ (aquí se opinaba que estaba supuestamente obsoleta).
Entre otras cosas, inline significa en realidad que el programador no utiliza el orden de cálculo de los parámetros de la función y si el compilador decide que la función inline sea inline, entonces el compilador puede utilizar el orden de cálculo hacia delante como más eficiente (el orden de cálculo inverso es obviamente sólo eficiente para las funciones llamadas).
Al mismo tiempo, si el compilador decide incrustar una función no inline, debería utilizar el orden inverso (general) de evaluación, aunque esto conlleve una pérdida de eficiencia (porque el programador asumió este orden sin haber declarado la función inline)
inline también sería apropiado en MQL, donde el orden de cálculo no puede ser controlado explícitamente
La diferencia es que hay funciones normales (de derecha a izquierda) y funciones inline (orden indefinido).
Las funciones en línea no son funciones en absoluto, es decir, no pueden tener una dirección. Desde este punto de vista, no hay diferencia entre las funciones regulares y las personalizadas, así que, por ejemplo, no está claro por qué los argumentos de la función personalizada más sencilla (que en esencia es inline) se calculan siempre de derecha a izquierda. No excluyo que en el futuro para las funciones en línea el orden pueda cambiar, así que
En su día sugerí introducir una palabra clave inline para el uso seguro de la orden de cálculo:
Gracias por la aclaración, no había pensado en el inline.
Esta opción no afecta al resultado.
Gracias por la aclaración, no había pensado en el inline.
Esta opción no afecta al resultado.
No tiene efecto ahora, porque no existe en MQL
y en el futuro puede tener un significado real, de lo contrario, ¿por qué se introduciría?
No tiene efecto ahora, porque en MQL está como ausente ahora
y en el futuro puede tener un significado real, si no, ¿por qué se habría introducido?
Por lo que recuerdo de la ayuda a la versión, se introdujo como un stub para permitir inlinear archivos *.h.