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

 
Artyom Trishkin:

Todo está claro sobre la entrada. Lo de extern - ahí, según me parece, primero puedes declarar variables con el mismo tipo e identificador en diferentes archivos para adjuntarlas al proyecto, y luego resulta que no puedes declararlas así. Por supuesto, esto es un impresionismo de tres pisos...

El significado de extern es que si el archivo principal (main) tiene alguna variable y otro archivo se adjunta a este archivo. Y en este archivo adjunto necesitamos usar la variable declarada en el archivo principal, entonces en el archivo adjunto la declaramos como extern. Como resultado, el archivo vinculado puede ser compilado y cuando el archivo principal es compilado,la declaración de variables en el archivo vinculado es ignorada.

 
Alexey Viktorov:

No lo sé. Para mí, toda la documentación se explica por sí misma. Si hay dificultades en alguna parte, desaparecen después de algunos experimentos.

Pero si no estoy familiarizado con las operaciones a nivel de bits, puedo leer cualquier artículo que quieras... No entenderé ni una palabra. Al igual que no podía entender nada de las banderas y los conjuntos de banderas hasta que Artem me lo explicó de viva voz.

Es comprensible si se le exigen valores, pero cómo funciona todo antes y después - la más oscura oscuridad

 
Fast235:

es comprensible si se le exige valor, pero cómo funciona todo antes y después es turbio, la más oscura turbiedad

¿Quién es ella?

 
Alexey Viktorov:

¿Quién es ella?

la esencia del trabajo

 
Alena Lysenkova:

lo hay:
1) extern sólo funciona en mql4.
2) los comentarios después de la entrada se mostrarán en los parámetros de entrada en lugar del nombre de la variable de entrada
input int ma_period = 20;
- dirá "ma_period".
input int ma_period = 20; // Periodo MA
- se escribirá "período MA".
para que sea exactamente como en mql4, se necesita el modo de compilación estricto #property strict.
Este truco no existe con extern.
3) Las variables externas pueden ser modificadas en el código como cualquier variable global, las de entrada no.

Inicialmente, sólo había mql4 y extern, no había entrada, ni tampoco OOP en mql4.
Luego se desarrolló mql5 que inmediatamente incluyó la entrada porque mql5 en general estaba orientado a la POO.
Hace unos 2-3 años, mql4 se actualizó con muchas características de mql5, incluyendo la entrada.

¿Sobre qué terminal está escribiendo?

En MT5, si se declara una variable externa como extern en el indicador, es posible que no se pueda llamar al indicador a través de iCustom().

 
Dmitry Fedoseev:

¿Sobre qué terminal está escribiendo?

En MT5, si se declara una variable externa como extern en un indicador, es posible que el indicador no pueda ser llamado a través de iCustom().

No estoy reprochando ahora, pero usted escribe "puede fallar"... ¡resulta que puede o no funcionar! Quiero decir, es difícil para mí, como persona autodidacta sin educación especial, entender tal incertidumbre...

 
Alena Lysenkova:

lo hay:
1) extern sólo funciona en mql4.
2) los comentarios después de la entrada aparecerán en los parámetros de entrada en lugar del nombre de la variable de entrada
input int ma_period = 20;
- dirá "ma_period".
input int ma_period = 20; // Periodo MA
- se escribirá "período MA".
para que sea exactamente como en mql4, se necesita el modo de compilación estricto #property strict.
Este truco no existe con extern.
3) Las variables externas pueden ser modificadas en el código como cualquier variable global, las de entrada no.

Inicialmente, sólo había mql4 y extern, no había entrada, ni tampoco OOP en mql4.
Entonces se creó mql5 y se incluyó inmediatamente la entrada porque mql5 en general estaba orientado exactamente a la OOP.
Hace unos 2-3 años, mql4 se actualizó con muchas características de mql5, incluyendo la entrada.

extern funciona en ambos casos. También lo hace la entrada en MQL5 y MQL4. Su propósito es diferente, y está escrito en la ayuda.

¿Por qué dirigir a una persona directamente a una idea errónea sobre el propósito de las variables de entrada y externas?

 
Dmitry Fedoseev:

El significado de extern es que si el archivo principal (main) tiene alguna variable y otro archivo se adjunta a este archivo. Y en este archivo adjunto necesitamos usar la variable declarada en el archivo principal, entonces en el archivo adjunto la declaramos como extern. Como resultado, el archivo vinculado puede ser compilado, pero cuando se compila el archivo principal, la declaración de variables en el archivo vinculado es ignorada.

También pensé que este modificador funciona como en C++, es decir, se declara en el archivo de inclusiónhttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

Comprobado no funciona como debería en C++


Archivo de la biblioteca tstextern

//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
extern int koef=1 ;
 int MyCalculator(int value,int value2) export
   {
    return((value+value2)*koef);
   }
//+------------------------------------------------------------------+

archivo de script:

#import "tstextern.ex5"
int MyCalculator(int value,int value2);
#import

extern int koef;

void OnStart()
  {
      koef = 666;
      int res = MyCalculator(100,200);
      Print("result = ",res);
   
  }
//+------------------------------------------------------------------+

cualquier manipulación de la variablekoef no hacenada, sigue estando en el ámbito local (dentro de cada archivo)


Artyom Trishkin:

Su propósito es diferente y está escrito en la ayuda.

La diferencia está en el control de acceso:

entrada - sólo se puede leer, la escritura está prohibida.

externo - puede ser leído y escrito, y después de la reinicialización del programa MQL este valor será restaurado al valor especificado en los ajustes externos

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2019.06.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Maksim Neimerik:

No estoy siendo negativo ahora, pero escribes "podría no funcionar"... puede que no funcione, pero puede que sí. Quiero decir, es difícil para mí, como persona autodidacta sin educación especial, entender tal incertidumbre...

Quiero decir, no lo he comprobado ahora mismo. Y es peligroso decir lo que había antes, porque las cosas cambian muy a menudo. Quizás fue un fallo temporal.

 
Igor Makanu:

También pensé que este modificador funciona como en C++, es decir, se declara en el archivo del pluginhttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

no funciona como debería en C++


Archivo de la biblioteca tstextern

archivo de script:

cualquier manipulación de la variablekoef no hace nada, sigue estando en el ámbito local (dentro de cada archivo)

Bueno, tienes una biblioteca. Por supuesto, habrá diferentes variables. Lo que se quiere decir es la conexión de mqh a través de include.

Razón de la queja: