La differenza tra esterno e ingresso - pagina 6

 

In generale, dovremmo partire dal fatto che le variabili globali sono il male, e quando una tale variabile è usata in molti file e può essere cambiata da qualsiasi luogo, allora è il male al quadrato! Pertanto, tali variabili dovrebbero sempre essere dichiarate come costanti (a meno che non stiamo parlando di variabili ausiliarie per scopi di debug, che non influenzano la logica dell'algoritmo).

Quindi, se abbiamo una variabile globale costante, allora abbiamo una conclusione ovvia: non è più facile aggiungere le parentesi alla fine e renderla una funzione, e quindi ottenere flessibilità nell'impostare qualsiasi implementazione per questa funzione. E tenendo conto che le variabili extern in MQL sono poco sviluppate, come ho scritto sopra, non abbiamo altre alternative.
 
Lo specificatore extern è necessario se il progetto consiste di diversi file mq5 (da non confondere con mqh). In questo caso, ha senso dichiarare le variabili globali in un file separato. Se il progetto consiste di mqh ed è costruito usando #include, extern non è necessario, perché è un file diviso in più file.
 
Vladimir Simakov:
Lo specificatore extern è necessario se il progetto consiste di diversi file mq5 (da non confondere con mqh). In questo caso, ha senso dichiarare le variabili globali in un file separato. Se il progetto consiste di mqh ed è costruito usando #include, extern non è necessario poiché è un file diviso in più file.

esempio è necessario, ho provato a usare extern nelle librerie - non funzionahttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

 
Igor Makanu:

esempio è necessario, ho provato a usare extern nelle librerie - non funzionahttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

Non è per le biblioteche, è per i progetti. Il progetto può essere costruito sia su #include o fare diversi file mq5. Nel secondo caso, extern è necessario per inserire variabili globali nello scope di diversi file.
 
Vladimir Simakov:
Qui, nel secondo caso, avete bisogno di extern, che inserirebbe le variabili globali nello scope di diversi file.

Non mi dispiace, ma ho bisogno di un esempio, qui puoi indovinare dove usare extern - ho provato nella libreria, non ha funzionato, mostrami come usi extern

 
Vladimir Simakov:
Non è per le biblioteche, ma per i progetti. Il progetto può essere costruito sia su #include o fare diversi file mq5. Nel secondo caso, extern è necessario per inserire variabili globali nello scope di diversi file.
Come si inseriscono esattamente le variabili nello scope? I file di mq5 in un progetto sono indipendenti, non sono collegati in alcun modo. La compilazione di ogni file è indipendente, vero?
 
Il punto è che extern si è rivelato semplicemente inutile. Una variabile dichiarata globalmente in qualsiasi file di progetto è disponibile in tutti i suoi file. Ma perché? Domanda per i creatori.
 
Vladimir Simakov:
Il punto è che extern si è rivelato semplicemente inutile. Una variabile dichiarata globalmente in qualsiasi file di progetto è disponibile in tutti i suoi file. Ma perché? Domanda per i creatori.

Si può dichiarare una variabile extern in tutti i file *.mqh in cui viene utilizzata.

Quindi, tali file *.mqh non dipendono dal file *.mq5 (o altri *.mqh), in cui è dichiarata la variabile globale.
Questo permette di usare i file in altri progetti, aumentando il riutilizzo del codice.

 
Ilyas:

È possibile dichiarare la variabile extern in tutti i file *.mqh in cui viene utilizzata.

Quindi, tali file *.mqh non dipendono dal file *.mq5 (o altri *.mqh), in cui è dichiarata la variabile globale.
Questo permette di usare i file in altri progetti, aumentando il riutilizzo del codice.

Grazie, ora capisco la logica. Inizialmente pensavo che fosse simile a extern in C++.
 
Vladimir Simakov:
Grazie, ora capisco la logica. Inizialmente pensavo che fosse simile a extern in C++.

Non è simile?