Compilerfehler mit Template-Parameter = void* - Seite 8

 
A100:

Sollte ich mich nicht korrekt ausgedrückt haben - bitte korrigieren Sie mich -, so habe ich mein Konzept kurz und unmissverständlich dort dargelegt, wo Warnungen vor Klammern erforderlich sind

Falsch. Die Verwendung von Klammern verringert die Fehlerwahrscheinlichkeit.

Eine Warnung ist ein Hinweis darauf, dass relativ viele Programmierer Fehler machen, wenn sie auf diese Weise schreiben: Das Ergebnis ist nicht das, was sie beabsichtigen. Dies gilt für alle Warnhinweise, nicht nur für Klammern.

 
fxsaber:

Falsch. Durch die Verwendung von Klammern wird die Gefahr von Fehlern verringert.

Eine Warnung ist ein Hinweis darauf, dass relativ viele Programmierer Fehler machen, wenn sie auf diese Weise schreiben: Das Ergebnis ist nicht das, was sie beabsichtigen. Dies gilt für alle Warnhinweise, nicht nur für Klammern.

Dabei handelt es sich nicht um ein Konzept, sondern um eine allgemeine Überlegung.

Die Frage ist praktischer Natur und hat keinen abstrakten Charakter, sondern ist sehr konkret: Wo braucht man Klammern? Überall? Oder selektiv? Wer bestimmt dann die Auswahl? Das fxsaber? Können Sie das eindeutig formulieren? Damit dieses Konzept im Compiler umgesetzt werden kann

Ich habe es so formuliert: "nur dort, wo es nicht ohne geht".

 
pavlick_:

ZS: aber wenn ich es täte, würde ich es so ähnlich wie möglich mit der Standard-Plus-Bibliothek machen (Namen, Verhalten, etc.), so dass ich keine Wahl habe. Warum eine weitere Spezifikation erstellen, wenn bereits alles geschrieben ist?

Wenn ja, werden Objekt- und Zeiger-Arrays in mql überhaupt nicht benötigt. Dynamische Listen und Schleifen für jeden erlauben es, 99% der Aufgaben im Handel auf die kompakteste und bequemste Weise zu lösen. Sie brauchen nicht einmal eine eigene Listenklasse. All diese zusätzlichen Funktionen werden in einem größeren Umfang benötigt, als wir ihn hier normalerweise haben...

 
A100: Können Sie sich eindeutig artikulieren?

wo sie das Verständnis des Codes erleichtern

 
TheXpert:

wo sie das Verständnis des Codes erleichtern

Damit das Konzept im Compiler umgesetzt werden kann. Niemand verbietet unnötige Klammern. Die Frage bezieht sich auf unnötige Warnungen

 
A100:

Die Frage ist eine praktische, nicht eine abstrakte, sondern eine konkrete: Wo werden Klammern benötigt? Überall? Oder selektiv? Wer bestimmt dann die Auswahl? Das fxsaber? Können Sie das eindeutig artikulieren?

Die Frage war, ob der MT4-Compiler richtig ist

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Neue Version der MetaTrader 5 Build 1930 Plattform: Schwebende Chart-Fenster und .Net Bibliotheken in MQL5

fxsaber, 2018.12.11 19:44

#property strict
   // from MT5: Canvas.mqh
   uint Pixel = (r<<16|g<<8|b<<0|255<<24) &0xffffffff; //check operator precedence for possible error; use parentheses to clarify precedence


Das ist in diesem Fall richtig. Klammern sind hier nicht erforderlich, aber erwünscht, da es wahrscheinlich zu einem Fehler kommt. Auf der Grundlage solcher Wahrscheinlichkeiten gibt der Compiler Warnungen jeglicher Art aus. Sie wurden aus einem bestimmten Grund erfunden.

 
fxsaber:

In diesem Fall hat er Recht.

Konkrete Beispiele sind in diesem Stadium nicht erforderlich (Sie können so viele nennen, wie Sie möchten). Was wir brauchen, ist ein einziges Konzept, das im Compiler implementiert werden kann (wenn Warnungen ausgegeben werden sollen, wenn Klammern fehlen)

 
A100:

Sie brauchen in diesem Stadium keine konkreten Beispiele zu nennen (Sie können so viele nennen, wie Sie wollen). Es wird ein Konzept benötigt, das im Compiler implementiert werden kann

Es ist bereits ziemlich gut umgesetzt. Es ist nur so, dass sich MT4 als schlauer erwiesen hat.

Forum zum Thema Handel, automatische Handelssysteme und Strategietests

Neue Version von MetaTrader 5 build 1930: Floating Chart Window und .Net Library in MQL5

fxsaber, 2018.12.11 20:22

Es handelt sich keineswegs um überflüssige Meldungen. Es gibt immer Prioritäten.

bool a = r && g || b; // check operator precedence for possible error; use parentheses to clarify precedence

Der Compiler warnt fives auch schon vor einem möglichen Fehler.

 
fxsaber:

Es ist bereits ziemlich gut umgesetzt. Es ist nur so, dass sich MT4 als schlauer erwiesen hat.

Diese Warnung wurde nur ausgesprochen, weil MQL5 andere Prioritäten hat. Nicht weil . ..

D.h., das Konzept: "Warnungen sind wahrscheinlich an den Stellen erforderlich, an denen MQL4 vorher anders war". So haben die Entwickler ihre früheren Fehler behoben. nicht mehr als das

 
Es wäre bequemer, wenn der Compiler die Klammern automatisch "richtig" anordnen würde, ähnlich wie es Excel macht, wenn man eine unvollständige Formel schreibt.