Vim als Ide für mql - Seite 7

 
Maxim Kuznetsov:

Wenn ich es richtig verstehe, sollten wir immer noch Schutzvorrichtungen verwenden, und es gibt einige spezielle Code-Anforderungen?

In unseren eigenen Header-Dateien brauchen wir Schutzvorrichtungen, ja. Wir laufen zuerst durch den Schlauch, er macht ein großes Durcheinander aus allen Haken und das geht an den µl-Compiler. Ohne Schutzmechanismen werden die Definitionen wiederholt und der µl-Compiler erzeugt Fehler.

Von den Code-Anforderungen - ja nur eine im Prinzip - packen wir die spezifischen μl-Direktiven des Präprozessors wie folgt

#ifndef  VIM
mqlcpp_#import  jkjkjk.dll
#endif
void fn_from_jkjkjk_dll();

Damit Clang bei der Analyse und Kompilierung nicht über diesen Import stolpert. Wenn mql ein spezifisches Konstrukt ist, aber nicht eine Direktive für den Präprozessor, dann ohne mqlcpp_ (Sie müssen nicht, aber aus der Sicht von Clang ist dies eine Art Fehler).

#ifndef  VIM
input int            MA_Period=13; // Ну или INPUT макрос
input int            MA_Shift=0;
#else
int            MA_Period=13;
int            MA_Shift=0;
#endif

Ob man Zeiger mit -> dereferenziert und & vor Arrays setzt, bleibt jedem selbst überlassen, aber wenn man dem C++-Stil folgt, erhält man bessere Unterstützung von Clang.

HH: Übrigens, ich habe Ihnen nicht gesagt, wie "erste Zusammenstellung" im Zusammenhang mit dem Hinzufügen von Wachen definiert ist. Siehe Include/Object.mqh, und wenn wir dort keinen Guard finden, dann kompilieren wir zuerst. Ich würde auch gerne die Möglichkeit hinzufügen, eine schwarze Liste für dumme Diebe zu erstellen.
 
Vict:

...

Im Allgemeinen sind Ihre Fragen falsch, interessanter - ich habe eine Idee in ein paar Tagen auf meinen Knien mit allen Goodies und viel höherer Qualität als der Meta-Editor...

Ja... Mit solchen Fähigkeiten ist es einfach, ein Betriebssystem in einer Woche zu schreiben). Manchmal schmücke ich gerne aus, aber so viel...)

Vielleicht ist es ein öffentlich verfügbares Framework, mit dem Sie Software auf Puzzle-Ebene erstellen können? Nun, dann kann sich jeder seine eigene IDE nach seinem Geschmack zusammenstellen und sie verwenden).

In ein paar Tagen...
 

Lesen, lesen....

Ich bin es leid, mir diese Angeber anzusehen.

All diese Tricks sind für einen Händler, der eine Handelsstrategie für sich selbst schreibt, nicht notwendig.

Dies gilt umso mehr für individuelle Bestellungen, da es sich meist um Anfänger handelt. Es gibt Aufträge von kindlicher Unschuld, die in ein paar Zeilen Code umgesetzt werden.

Natürlich hat mir die Tatsache gefallen, dass die Unterstützung von Python geplant ist.

Das ist eine sehr nützliche Ergänzung.

 
Vict:

...Der Rest von uns wird weiterhin zum MC beten und pflichtbewusst Ampersands vor Arrays setzen und über einen Punkt dereferenzieren.

Was den Punkt betrifft, so ist er bequemer und lakonischer, außerdem ist er mit OOP-Sprachen kompatibel. Im Gegenteil, ich habe oft gedacht, dass es schön wäre, die gleiche Funktion in C++ zu haben. Natürlich gibt es einen Nachteil, aber ich denke, es gibt mehr Vorteile.
 
Реter Konow:
Ganz genau! Wie viele Variablen- und Funktionsnamen haben sich auf diese Weise geändert. Ein bisschen länger als in VS, aber mehr Kontrolle.
Verwechseln Sie die reguläre automatische Ersetzung von Text in einer Datei nicht mit der kontextsensitiven Ersetzung.

 
Alexey Navoykov:
Was den Punkt anbelangt, so ist es bequemer und lakonischer, außerdem ist es mit OOP-Sprachen kompatibel. Im Gegenteil, ich habe oft gedacht, dass es schön wäre, die gleiche Funktion in C++ zu implementieren. Natürlich hat das einen Nachteil, aber ich denke, es gibt mehr Vorteile.

Dann müssten Sie die intelligenten Zeiger, die Iteratoren, . . Man muss irgendwie zwischen einem Funktionsaufruf des Zeigers selbst und dem Typ, auf den gezeigt wird, unterscheiden.

unique_ptr<type> ptr(...);
ptr->call_referenced();
ptr.release();

Ein Punkt kann nicht überladen werden, d.h. der Zugriff auf die Interna ist gewährleistet.

Renat Akhtyamov:

Dies gilt umso mehr für die Bestellung, da es sich meist um Anfänger handelt, die bestellen. Es sind Befehle von kindlicher Unschuld, die in ein paar Zeilen Code umgesetzt werden.

Ich kümmere mich nicht um Aufträge, ich schreibe für mich selbst und teile mein Wissen mit anderen, nicht für irgendwelche Marketingexperten.

 
Vict:

Dann müssten Sie die intelligenten Zeiger, die Iteratoren, . . Man muss irgendwie zwischen einem Funktionsaufruf des Zeigers selbst und dem Typ, auf den gezeigt wird, unterscheiden.

Ein Punkt kann nicht überladen werden, d.h. der Zugriff auf die Interna ist gewährleistet.

Nun, man kann -> in MQL auch nicht überladen. Deshalb kommt der Unterschied nicht in Frage.
Übrigens, ist es möglich, diese Überladung in Vim zu emulieren?
 
Alexey Navoykov:
Verwechseln Sie die reguläre automatische Ersetzung von Text in einer Datei nicht mit der Kontextersetzung.

Und wofür ist sie? Für den Fall, dass Variablen mit unterschiedlichen Kontexten in derselben Datei denselben Namen haben? Ersetzung durch Bedeutung, nicht durch Text? Bitte klären Sie, wo und warum es verwendet werden sollte. Plötzlich brauchen es alle und manche wissen es nicht.

Zy. Auch Google weiß nichts von dieser Ersetzung...
 
Реter Konow:
Und wofür ist sie? Für den Fall, dass Variablen mit unterschiedlichen Kontexten in derselben Datei denselben Namen haben? Ersetzung durch Bedeutung, nicht durch Text? Erläutern Sie bitte, wo und warum Sie es verwenden sollten. Plötzlich brauchen es alle, und manche wissen es nicht.
Nun, im Prinzip haben Sie recht.
 
Alexey Navoykov:
Nun, im Prinzip haben Sie recht.
Wenn Sie es richtig verstanden haben, handelt es sich um einen Erzrivalen. ))