Compilerfehler mit Template-Parameter = void* - Seite 12

 
fxsaber:

Die Entwickler. Das ist zum Beispiel bei OrderSend der Fall.

Hier ist ein Beispiel https://www.mql5.com/ru/forum/295485/page11#comment_9959761

Ich dachte, sie würden es leid sein, immer dieselbe Frage zu beantworten, und endlich eine Warnung aussprechen - nein, das haben sie nicht.

MQL ist also nicht für Trader, sondern für Programmierer

Баг компилятора при параметре шаблона = void*
Баг компилятора при параметре шаблона = void*
  • 2018.12.20
  • www.mql5.com
Ошибка компилятора. Билд 1961, 64 бит...
 
A100:

Es reicht aus, die zahlenbasierten Warnungen zu deaktivieren (man kann sie im MetaEditor nicht sehen, aber sie sind da), was ich mit dem Befehl compiler mache

Können Sie mir sagen, wie man das macht?
 
Alexey Navoykov:
Können Sie mir sagen, wie das gemacht wird?

Die Kompilierungsergebnisse werden in eine Datei ausgegeben, aus der die Zeilen mit nicht vordefinierten Warnnummern extrahiert werden (nach dem Wort "Warnung" steht eine Nummer)

 
A100:

Die Ergebnisse der Kompilierung werden in eine Datei ausgegeben, aus der die Zeilen extrahiert werden, die keine vordefinierten Warnnummern haben (das Wort "Warning" wird von einer Nummer gefolgt)

Wie schaffe ich es also, dass diese Warnungen in ME nicht erscheinen? Wo kann ich diese Zahlen eintragen?
 
Alexey Navoykov:
Wie schaffe ich es, dass diese Warnungen in ME nicht erscheinen? Wo kann ich diese Zahlen eintragen?

Ich kompiliere in der Kommandozeile und alle Meldungen werden auch in der Kommandozeile angezeigt. Es kann nicht an die MetaEditor-IDE angeschlossen werden. Dies ist sozusagen die abschließende Kompilierung - die Überprüfung auf wichtige Warnungen. Ich schaue mir nicht einmal mehr die Warnungen in der IDE an - es gibt zu viele davon

 
A100:

MQL ist also nicht für Trader, sondern für Programmierer

Da ich kein Programmierer bin, verwende ich MQL. Beenden Sie dieses Mantra über Programmierer. Ich denke, ich kenne MQL besser als der durchschnittliche Benutzer und vielleicht ein Freiberufler.

Ich kann also mit Fug und Recht behaupten, dass ich die Probleme der meisten Benutzer der Sprache verstehe.

 
A100:

Ich kompiliere auf der Kommandozeile und alle Meldungen werden auch auf der Kommandozeile ausgegeben. Es kann nicht mit MetaEditor IDE verbunden werden. Dies ist die endgültige Kompilierung - prüfen Sie auf wichtige Warnungen

Nun, es ist nicht interessant... Übrigens, warum kompilieren Sie auf der Kommandozeile?
 
Alexey Navoykov:
Ah, das ist uninteressant... Übrigens, warum kompilieren Sie auf der Kommandozeile?

Sagen wir, es gibt ein neues Build und / oder ich muss alle und / oder nur bestimmte Dateien neu kompilieren - ich lege eine Liste fest und nur die Liste wird kompiliert / mehrere Listen

Oder muss ich in einem anderen Build neu kompilieren - ich setze die Build-Nummer und die Liste, und die Befehlsdatei macht das alles von selbst

 
A100:

Und was nützt ein solcher Wert, wenn man nur 4 von 8 Bytes erhält. Angesichts der Tatsache, dass die Entwickler ausdrücklich verboten, den Wert eines Zeigers zu ulong konvertieren (bevor Sie konnten, und glauben Sie mir, hohe Bits waren nicht Null zu dieser Zeit).

Es wurde experimentell gezeigt, dass sich diese Zahl genau so verhält, wie sich ein Zeigerindex in einem Array von Zeigern verhalten würde, wenn ein solches Array den Zeigern strikt aufeinanderfolgende Zahlen zuweisen würde und, wenn ein Bereich von Zahlen freigegeben wird, diese von der letzten freigegebenen Zahl bis zur ersten in umgekehrter Reihenfolge wiederverwenden würde. Wenn jemand dieses System von Deskriptoren in seiner Architektur duplizieren wollte, z.B. einen Zeigertyp durch eine Struktur der Größe int, verständliches Verhalten (Rückgabe von true als Inline-Typ für ein zerstörtes Objekt, während dieses Verhalten das Überladen einer Reihe von nützlichen logischen Operatoren mit Zeigern verbietet, ist dies ein komplettes Facepalm) und alle Vorteile des einfachen Typs, unter Beibehaltung der strengen Kontrolle über die Population von Objekten und Zeigern über Zähler, die Fähigkeit, diese Zahl aus dem Objekt selbst zu erhalten, würde eine erhebliche Menge von pa sparen

Apropos profane Aufgaben - diese Zahl gibt die Anzahl der im System erstellten Objekte an und ist für die Fehlersuche in jeder auf dynamischen Listen basierenden Architektur nützlich. Es überrascht nicht, dass ich nicht der Erste bin, der herausgefunden hat, wie man das Verbot, es zu bekommen, "überlisten" kann, und mir wurde sogar gesagt, dass es schneller geht, allerdings nur für 4.
 
A100:

Zum Beispiel ist ein neuer Build herausgekommen und / oder ich muss alle oder nur bestimmte Dateien neu kompilieren

Ich verstehe, aber das ist ein Sonderfall. Schließlich verbringen wir die meiste Zeit mit dem Programmieren und Kompilieren in der IDE, so dass die Deaktivierung unnötiger Warnungen dort sehr praktisch wäre.

Ich persönlich finde dort eine Menge unnötiger Dinge. So gibt es beispielsweise Warnungen bei der impliziten Konvertierung in String. Ich kann mich nicht an Fälle erinnern, in denen dies unangenehme Folgen haben könnte. In 99 % der Fälle wird String nur zum Drucken von Text auf dem Bildschirm oder zum Schreiben in eine Datei verwendet.

Oder nehmen wir an, der Typ des Rückgabewerts der Funktion ist bool und Sie geben 0 oder 1 zurück, dann wird sich der Compiler ebenfalls beschweren und sagen, dass der Typ nicht boolean ist. VS hat ihn nicht. Diese Konstanten sind für bool zulässig. Ich schreibe zum Beispiel lieber return 0 als return false, weil es visuell viel einfacher zu erkennen ist.

Mein Logbuch ist also fast vollständig mit nur diesen beiden Warnungen gefüllt. Ich würde sie gerne loswerden).

Wenn ich dazu komme, werde ich es vielleicht selbst fertigstellen. Ich habe da eine Menge Ideen. Im Moment habe ich nur dafür gesorgt, dass das Protokoll nach Beendigung der Kompilierung automatisch zum Anfang des ersten Fehlers (falls vorhanden) gescrollt wird. Ohne das musste ich die Liste (und die ist nicht so groß) manuell scrollen und nach Fehlermeldungen suchen. Was für eine Nervensäge.