Vim als Ide für mql - Seite 4

 
Vladimir Simakov:
  1. Der Präprozessor zu entwickeln, ist das gleiche #if erforderlich.


Das ist es doch, oder?

Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
  • www.mql5.com
Директивы препроцессора используются компилятором для предварительной обработки исходного кода перед его компиляцией. Директива всегда начинается со знака Каждая директива описывается отдельной записью и действует до переноса строки. Нельзя в одной записи использовать несколько директив. Если запись директивы получается слишком большой, то её...
 
Alexey Viktorov:


Ist es nicht genau das, was es ist?

Mein Mann, ich habe über #if geschrieben - es ist nicht da. Lernen Sie die Grundlagen.
 
Vladimir Simakov:
Mein Mann, ich habe über #if geschrieben - es ist nicht da. Lernen Sie die Grundlagen.

Erklären Sie den Unterschied. Vielleicht lerne ich ja noch etwas. Sonst werde ich unwissend sterben...

 
Alexey Viktorov:

Erklären Sie also den Unterschied. Vielleicht lerne ich ja noch etwas. Oder ich werde unwissend sterben...

https://en.cppreference.com/w/cpp/preprocessor
 
Vladimir Simakov:
https://en.cppreference.com/w/cpp/preprocessor

Nun, das ist überhaupt nicht schlimm. Ich werde tot sein, bevor ich Englisch lerne.

 
Alexey Viktorov:

Nun, das ist überhaupt nicht schlimm. Ich werde tot sein, bevor ich Englisch lerne.

Leider ist alles Gute dort erfunden worden, wenn Sie also kein Englisch können, ist das Ihr Problem. Ich persönlich lerne noch dazu. Die gleichen Dokumente auf Google übersetzen die Profis, sehr viel sogar dazu beitragen, zu lernen, weil solche Scheiße von diesem Übersetzer in Russisch, dass es einfach nirgends zu gehen. Aber die Scharfschützen mit den Docks haben Glück, wie das russische Team im Entwicklungsteam ein wenig mehr als ein Dime))))
 
Alexey Viktorov:

Nun, das ist überhaupt nicht schlimm. Ich werde tot sein, bevor ich Englisch lerne.

wenn schnell und sehr schnell, #if ist eine Prüfung für eine Bedingung, die vor der Kompilierung bekannt ist, während es in MQL nur #ifdef gibt - eine Prüfung für das entsprechende Define, d.h. den Code

const int x = 2;
#if  x>0 #include "lib1.mqh"
#elif   #include "lib2.mqh" 
#endif

wird nicht funktionieren

aber das ist nicht genau! )))) - Ich mag keine Makros, aber manchmal ist es schwer, ohne sie auszukommen ((((

 
Igor Makanu:

wenn schnell und sehr schnell, #if ist eine Prüfung für eine Bedingung, die vor der Kompilierung bekannt ist, während es in MQL nur #ifdef gibt - eine Prüfung für das entsprechende Define, d.h. den Code

wird nicht funktionieren

aber das ist nicht genau! )))) - Ich mag keine Makros, aber manchmal ist es schwer, ohne sie auszukommen ((((

Ich kenne die neuesten C++-Standards nicht genau, aber "#if x>0" scheint nirgendwo implementiert zu sein. Normalerweise geht es zumindest um "#if defined DEBUG && defined LEVELS".

 

In den letzten Jahren hat es viele Beschwerden über den Herausgeber gegeben. Es ist falsch zu sagen: "Mach eine Liste". Niemand sieht den Sinn darin, sich ernsthaft hinzusetzen und eine solche Liste zu erstellen, weil er nicht an die Antwort glaubt.

Um den Editor zu verbessern, müssen Sie nur damit beginnen, Standardfunktionen von gängigen IDEs zu implementieren.

Kurz gesagt, was mir fehlt:

Code Folding.

Vollständige Liste der Funktionen mit Alt-M, auch wenn die Funktionen in #ifdef/#endif eingeschlossen sind.

Aufrufen eines externen Styler. Ich verwende Clang. Das eingebaute System passt mir überhaupt nicht, es besteht nur aus festen Einstellungen.

Kontrolliert externe Änderungen an geöffneten Dateien.

Leistungsfähigere Debugging-Optionen. Zum Beispiel das Ändern von Variablenwerten, Haltepunkte bei Variablenänderungen (auch nach Bedingungen). Ich hoffe nicht, dass ich bei der Fehlersuche "zurücktreten" kann, das ist zu viel.

Das alles wurde bereits in den zotteligen Jahren eingeführt.

 
Edgar Akhmadeev:

Ich kenne die neuesten C++-Standards nicht genau, aber "#if x>0" scheint nirgendwo implementiert zu sein. Normalerweise geht es zumindest um "#if defined DEBUG && defined LEVELS".

#define a 3
#if a<5
...
#endif
Das wird funktionieren. Der springende Punkt ist hier die Übersetzungsphase. Wenn der Präprozessor läuft, weiß er nichts über constexpr-Variablen, da dies bereits zur Kompilierzeit geschieht.