Der Unterschied zwischen extern und input - Seite 6

 

Generell sollten wir davon ausgehen, dass globale Variablen böse sind, und wenn eine solche Variable in vielen Dateien verwendet wird und von überall aus geändert werden kann, dann ist sie böse im Quadrat! Daher sollten solche Variablen immer als konstant deklariert werden (es sei denn, es handelt sich um Hilfsvariablen zu Debugging-Zwecken, die die Logik des Algorithmus nicht beeinflussen).

Wenn wir also eine konstante globale Variable haben, dann liegt die Schlussfolgerung auf der Hand: Ist es nicht einfacher, Klammern am Ende hinzuzufügen und sie zu einer Funktion zu machen, und so Flexibilität bei der Einstellung einer beliebigen Implementierung für diese Funktion zu erhalten. Und wenn man berücksichtigt, dass externe Variablen in MQL unterentwickelt sind, wie ich oben schrieb, haben wir keine anderen Alternativen.
 
Der Extern-Spezifizierer wird benötigt, wenn das Projekt aus mehreren mq5-Dateien besteht (nicht zu verwechseln mit mqh). In diesem Fall ist es sinnvoll, globale Variablen in einer separaten Datei zu deklarieren. Wenn das Projekt aus mqh besteht und mit #include gebaut wird, wird extern nicht benötigt, da es sich um eine Datei handelt, die in mehrere Dateien aufgeteilt ist.
 
Vladimir Simakov:
Der Extern-Spezifizierer wird benötigt, wenn das Projekt aus mehreren mq5-Dateien besteht (nicht zu verwechseln mit mqh). In diesem Fall ist es sinnvoll, globale Variablen in einer separaten Datei zu deklarieren. Wenn das Projekt aus mqh besteht und mit #include gebaut wird, wird extern nicht benötigt, da es sich um eine Datei handelt, die in mehrere Dateien aufgeteilt ist.

Beispiel benötigt wird, habe ich versucht, extern in Bibliotheken zu verwenden - es funktioniert nichthttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

 
Igor Makanu:

Beispiel benötigt wird, habe ich versucht, extern in Bibliotheken zu verwenden - es funktioniert nichthttps://www.mql5.com/ru/forum/316795/page2#comment_12259472

Es ist nicht für Bibliotheken, sondern für Projekte. Das Projekt kann entweder auf #include gebaut werden oder mehrere mq5-Dateien erstellen. Im zweiten Fall wird extern benötigt, um globale Variablen in den Geltungsbereich verschiedener Dateien zu bringen.
 
Vladimir Simakov:
Hier, im zweiten Fall, brauchen Sie extern, was die globalen Variablen in den Geltungsbereich verschiedener Dateien bringen würde.

Ich habe nichts dagegen, aber ich brauche ein Beispiel, hier können Sie erraten, wo Sie extern verwenden - ich habe es in der Bibliothek versucht, es hat nicht funktioniert, zeigen Sie mir, wie Sie extern verwenden

 
Vladimir Simakov:
Es ist nicht für Bibliotheken, sondern für Projekte gedacht. Das Projekt kann entweder auf #include gebaut werden oder mehrere mq5-Dateien erstellen. Im zweiten Fall wird extern benötigt, um globale Variablen in den Geltungsbereich verschiedener Dateien zu bringen.
Wie genau geben Sie Variablen in den Geltungsbereich ein? mq5-Dateien in einem Projekt sind unabhängig, sie sind in keiner Weise miteinander verbunden. Die Kompilierung der einzelnen Dateien ist unabhängig, nicht wahr?
 
Der springende Punkt ist, dass sich extern einfach als unnötig erwiesen hat. Eine in einer beliebigen Projektdatei global deklarierte Variable ist in allen ihren Dateien verfügbar. Aber warum? Frage an die Ersteller.
 
Vladimir Simakov:
Der springende Punkt ist, dass sich extern einfach als unnötig erwiesen hat. Eine in einer beliebigen Projektdatei global deklarierte Variable ist in allen ihren Dateien verfügbar. Aber warum? Frage an die Ersteller.

Sie können eine externe Variable in allen *.mqh-Dateien deklarieren, in denen sie verwendet wird.

Solche *.mqh-Dateien sind dann nicht von der *.mq5-Datei (oder einer anderen *.mqh-Datei) abhängig, in der die globale Variable deklariert ist.
Auf diese Weise können Sie die Dateien in anderen Projekten verwenden und die Wiederverwendung von Code erhöhen.

 
Ilyas:

Sie können externe Variablen in allen *.mqh-Dateien deklarieren, in denen sie verwendet werden.

Solche *.mqh-Dateien sind dann nicht von der *.mq5-Datei (oder einer anderen *.mqh-Datei) abhängig, in der die globale Variable deklariert ist.
Auf diese Weise können Sie die Dateien in anderen Projekten verwenden und die Wiederverwendung von Code erhöhen.

Danke, jetzt verstehe ich die Logik. Ursprünglich dachte ich, es sei ähnlich wie extern in C++.
 
Vladimir Simakov:
Danke, jetzt verstehe ich die Logik. Ursprünglich dachte ich, es sei ähnlich wie extern in C++.

Ist es nicht ähnlich?