La diferencia entre externo y de entrada - página 6

 

En general, debemos partir del hecho de que las variables globales son malvadas, y cuando una variable de este tipo se utiliza en muchos archivos y puede ser modificada desde cualquier lugar, ¡entonces es malvada al cuadrado! Por lo tanto, tales variables siempre deben ser declaradas como constantes (a menos que estemos hablando de variables auxiliares para fines de depuración, que no afectan a la lógica del algoritmo).

Así que, si tenemos una variable global constante, entonces es obvio: ¿no es más fácil añadir paréntesis al final y convertirla en una función, y así obtener flexibilidad para establecer cualquier implementación para esta función? Y teniendo en cuenta que las variables externas en MQL están poco desarrolladas, como escribí arriba, no tenemos otras alternativas.
 
El especificador externo es necesario si el proyecto consta de varios archivos mq5 (no confundir con mqh). En este caso, tiene sentido declarar las variables globales en un archivo separado. Si el proyecto consiste en mqh y se construye usando #include, extern no es necesario, porque es un archivo dividido en varios archivos.
 
Vladimir Simakov:
El especificador externo es necesario si el proyecto consta de varios archivos mq5 (no confundir con mqh). En este caso, tiene sentido declarar las variables globales en un archivo separado. Si el proyecto consiste en mqh y se construye usando #include, extern no es necesario ya que es un archivo dividido en varios archivos.

ejemplo es necesario, he tratado de usar extern en las bibliotecas - no funcionahttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

 
Igor Makanu:

ejemplo es necesario, he tratado de usar extern en las bibliotecas - no funcionahttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

No es para las bibliotecas, es para los proyectos. El proyecto puede ser construido en #include o hacer varios archivos mq5. En el segundo caso, se necesita extern para introducir variables globales en el ámbito de diferentes archivos.
 
Vladimir Simakov:
Aquí, en el segundo caso, se necesita extern, que introduciría las variables globales en el ámbito de diferentes archivos.

No me importa, pero necesito un ejemplo, aquí se puede adivinar dónde usar extern - lo intenté en la biblioteca, no funcionó, muéstrame cómo usas extern

 
Vladimir Simakov:
No es para las bibliotecas, sino para los proyectos. El proyecto puede ser construido en #include o hacer varios archivos mq5. En el segundo caso, se necesita extern para introducir variables globales en el ámbito de diferentes archivos.
¿Cómo se introducen exactamente las variables en el ámbito? Los archivos mq5 de un proyecto son independientes, no están conectados de ninguna manera. La compilación de cada archivo es independiente, ¿no?
 
La cuestión es que externamente resultó ser simplemente innecesario. Una variable declarada globalmente en cualquier archivo de proyecto está disponible en todos sus archivos. ¿Pero por qué? Pregunta para los creadores.
 
Vladimir Simakov:
La cuestión es que externamente resultó ser simplemente innecesario. Una variable declarada globalmente en cualquier archivo de proyecto está disponible en todos sus archivos. ¿Pero por qué? Pregunta para los creadores.

Puedes declarar una variable externa en todos los archivos *.mqh en los que se utilice.

Entonces, estos archivos *.mqh no dependen del archivo *.mq5 (u otro archivo *.mqh), en el que se declara la variable global.
Esto le permite utilizar los archivos en otros proyectos, aumentando la reutilización del código.

 
Ilyas:

Puede declarar la variable externa en todos los archivos *.mqh en los que se utilice.

Entonces, estos archivos *.mqh no dependen del archivo *.mq5 (u otro archivo *.mqh), en el que se declara la variable global.
Esto le permite utilizar los archivos en otros proyectos, aumentando la reutilización del código.

Gracias, ahora entiendo la lógica. Al principio pensé que era similar a extern en C++.
 
Vladimir Simakov:
Gracias, ahora entiendo la lógica. Al principio pensé que era similar a extern en C++.

¿No es similar?