Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 202
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Die Standardfunktionen erhalten die Argumente von links nach rechts.
Benutzerdefinierte Funktionen erhalten die Argumente von rechts nach links.
Ergebnis.
Ist das der richtige Weg?
Ist das so gewollt?
Auf diese UB ist kein Verlass. D.h. man muss ausdrücklich Situationen vermeiden, in denen die Logik eines Programms von der Reihenfolge abhängt, in der die Argumente ausgewertet werden
Reguläre Funktionen erhalten Argumente von links nach rechts.
Hier ein widerlegendes Beispiel:
Ergebnis: 2 1
Auf diese UB ist kein Verlass. D.h. wir müssen ausdrücklich Situationen vermeiden, in denen die Logik eines Programms von der Reihenfolge abhängt, in der die Argumente ausgewertet werden
Hier ein widerlegendes Beispiel:
Es stellt sich heraus, dass alles mit benutzerdefinierten instabil ist. Bei benutzerdefinierten Lösungen ist alles von Anfang an instabil.
Es stellt sich heraus, dass mit den Standardgeräten alles instabil ist. Bei den benutzerdefinierten ist es von Anfang an eindeutig.
Der Unterschied besteht darin, dass es reguläre Funktionen (von rechts nach links) und Inline-Funktionen (undefinierte Reihenfolge) gibt.
Inline-Funktionen sind gar keine Funktionen, d.h. sie können keine Adresse haben. Aus dieser Sicht gibt es keinen Unterschied zwischen regulären und benutzerdefinierten Funktionen. So ist es beispielsweise unklar, warum die Argumente der einfachsten benutzerdefinierten Funktion (die im Grunde genommen inline ist) immer von rechts nach links berechnet werden. Ich schließe nicht aus, dass sich in Zukunft bei Inline-Funktionen die Reihenfolge ändern kann, also
Ich habe schon einmal vorgeschlagen, ein Inline-Schlüsselwort für die sichere Verwendung der Reihenfolge der Berechnungen einzuführen:
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Fehler, Irrtümer, Fragen
A100, 2017.10.05 14:30
Dies zeigt einmal mehr die Nützlichkeit des C++-Schlüsselworts "inline" (es gab hier die Meinung, dass es angeblich veraltet sei).
Inline bedeutet unter anderem, dass der Programmierer die Berechnungsreihenfolge der Funktionsparameter nicht verwendet, und wenn der Compiler beschließt, die Inline-Funktion inline zu machen, dann kann der Compiler die Vorwärtsberechnungsreihenfolge als effizienter verwenden (die Rückwärtsberechnungsreihenfolge ist offensichtlich nur für aufgerufene Funktionen effizient).
Gleichzeitig sollte der Compiler, wenn er beschließt, eine Nicht-Inline-Funktion einzubetten, die (allgemeine) umgekehrte Reihenfolge der Auswertung verwenden, auch wenn dies zu einem Effizienzverlust führt (weil der Programmierer diese Reihenfolge angenommen hat, ohne die Funktion als Inline-Funktion deklariert zu haben)
inline wäre auch in MQL angebracht, wo die Berechnungsreihenfolge nicht explizit kontrolliert werden kann
Der Unterschied besteht darin, dass es normale Funktionen (von rechts nach links) und Inline-Funktionen (undefinierte Reihenfolge) gibt.
Inline-Funktionen sind gar keine Funktionen, d.h. sie können keine Adresse haben. Aus dieser Sicht gibt es keinen Unterschied zwischen regulären und benutzerdefinierten Funktionen. So ist zum Beispiel unklar, warum die Argumente der einfachsten benutzerdefinierten Funktion (die im Grunde genommen inline ist) immer von rechts nach links berechnet werden. Ich schließe nicht aus, dass sich in Zukunft bei Inline-Funktionen die Reihenfolge ändern kann, also
Ich habe schon einmal vorgeschlagen, ein Inline-Schlüsselwort für die sichere Verwendung der Berechnungsreihenfolge einzuführen:
Danke für die Klarstellung, ich hatte nicht an Inline gedacht.
Eine solche Option hat keinen Einfluss auf das Ergebnis.
Danke für die Klarstellung, ich hatte nicht an das Inline-Verfahren gedacht.
Diese Option hat keinen Einfluss auf das Ergebnis.
Es hat keinen Effekt jetzt, weil es irgendwie nicht in MQL existiert
und in Zukunft könnte es eine echte Bedeutung haben, warum sollte es sonst eingeführt werden?
Es hat keine Auswirkungen, weil in MQL ist es irgendwie abwesend jetzt
und in Zukunft könnte es eine echte Bedeutung haben, warum wäre es sonst eingeführt worden?
Soweit ich mich aus der Hilfe zu dieser Version erinnere, wurde sie als Stub eingeführt, um das Inlinen von *.h-Dateien zu ermöglichen.