Compilerfehler mit Template-Parameter = void* - Seite 9

 
A100:

Die Warnung wurde nur ausgegeben, weil die Prioritäten in MQL5 anders sind. Nicht weil ...

Die Entwickler haben also ihre früheren Fehler behoben... nicht mehr als das

Stimmt auchhier etwas mit den Prioritäten nicht?

 
fxsaber:

Stimmt auchhier etwas mit den Prioritäten nicht?

Sie sind in MQL5 und dem alten MQL4 unterschiedlich... Ich dachte, Sie hätten das bereits gelesen
 
A100:
Sie sind in MQL5 und dem alten MQL4 unterschiedlich... Ich dachte, Sie hätten das bereits gelesen

Eine Liste der Unterschiede, bitte.

 
fxsaber:

Eine Liste der Unterschiede, bitte.

Können Sie es nicht selbst machen? Klicken Sie auf die obigen Links?

MQL5 und neues MQL4

Operation

Beschreibung

Ausführungsanordnung

&&

Logische UND-Verknüpfung

Von links nach rechts

||

Logische Verknüpfung OR

Von links nach rechts


Alter MQL4

||

Logische Verknüpfung OR

Von links nach rechts

&&

Logische UND-Verknüpfung

Von links nach rechts

Je höher die Priorität einer Vorgangsgruppe ist, desto höher ist sie in der Tabelle platziert.

Ihr Beispiel:

bool a = r && g || b;
 
Ilya Malev:
Es wäre bequemer, wenn der Compiler die Klammern automatisch "richtig" anordnen würde, so wie es Excel macht, wenn man eine unvollständige Formel schreibt.

Im Allgemeinen gibt es spezielle Programmiersprachen für Klammerliebhaber - LISP. Hier ein Auszug aus einer Suchmaschine: "Dieser Stil ist ein bisschen wie die LISP-Sprache. Aber in LISP ist die große Anzahl von Klammern auf die fehlende Priorisierung von Operationen zurückzuführen."

 
A100:

Im Allgemeinen gibt es für Fans von Klammern spezielle Programmiersprachen - Simula, LISP. Hier ein Auszug aus einer Suchmaschine: "Dieser Stil ist ein bisschen wie die LISP-Sprache. Aber in LISP ist die große Anzahl von Klammern auf die fehlende Priorität der Operationen zurückzuführen."

Es ist gut, dass der Compiler vor etwas warnt, das Entwickler plötzlich in der bisherigen Logik ändern. Wenn die gleichen Warnungen bei Funktionsaufrufen wie ArrayMaximum nach der Migration des Codes von mql4 gegeben worden wären, hätte ich zu meiner Zeit viel Zeit und Nerven gespart (sie haben die Parameter eines Typs frei vertauscht, falls Ihnen das nicht bewusst ist).

 
Ilya Malev:

Es ist gut, wenn der Compiler Sie vor etwas warnt, das die Entwickler plötzlich in der bisherigen Logik ändern.

Das stört mich nicht. Lassen Sie diese Warnungen einfach im alten MQL4 stehen.

 
Was "normale Programmierer erinnern sich an die Prioritäten von C++-Operationen wie die Multiplikationstabelle" betrifft, so habe ich persönlich mich mehr oder weniger erst daran erinnert, als ich anfing, Operatoren zu überladen, und davor habe ich sie überhaupt nicht geöffnet. Nicht alle mql-Programmierer sind Profis, und die Entwickler des Terminals und der Sprache für Händler müssen dies nicht zuletzt berücksichtigen.
 
Ilya Malev:

Wenn die gleichen Warnungen bei Funktionsaufrufen wie ArrayMaximum nach der Übernahme von Code aus mql4 ausgegeben worden wären, hätte ich zu meiner Zeit viel Zeit und Nerven gespart (sie haben die gleichen Parameter frei getauscht, falls Sie das nicht wissen)

Nun, sie werden nicht ausgegeben. Das ist es, was selektive Kodierung so schlecht macht - es schafft die Illusion, dass der Compiler sich um alles kümmert (also entweder alles oder nichts).

 
Ilya Malev:
Nicht alle mql-Programmierer sind Profis, und die Entwickler des Terminals und der Sprache für Händler müssen dies nicht zuletzt berücksichtigen.

Ganz genau! Ich war nie ein Profi, aber solche Warnungen haben mir schon 100 Mal geholfen.

Grund der Beschwerde: