Compilerfehler mit Template-Parameter = void* - Seite 4

 
Dmitry Fedoseev:

Haben Sie versucht, den Link zu lesen, den Sie uns gegeben haben? Slava dort erklärt populär, warum es so ist - weil die Priorität im alten MQL4 durcheinander war. Deshalb ist es jetzt wichtig, Aufmerksamkeit zu erregen. Es ist nicht einmal gut, dass es nur eine Warnung gibt, es wäre besser, wenn es einen Fehler gäbe.

Oder, ein Schlag ins Gesicht

 
Dmitry Fedoseev:

Haben Sie versucht, den Link zu lesen, den Sie uns gegeben haben? Slava dort erklärt populär, warum es so ist - weil die Priorität im alten MQL4 durcheinander war. Deshalb ist es jetzt wichtig, Aufmerksamkeit zu erregen. Es ist nicht einmal gut, dass es nur eine Warnung gibt, es wäre besser, wenn es einen Fehler gäbe.

Und? Hier:

int i = 1 << 2 + 3;

Auch in MQL4 wurde die Priorität durcheinander gebracht? Es geht um den allgemeinen Ansatz, nicht um den speziellen Fall. In dem besonderen Fall können Sie eine Warnung/Fehler geben (als Ausnahme), aber warum sollte dies auf alles andere ausgedehnt werden?

Außerdem hat in MQL4 (soweit ich weiß) der Operator || keine Trägheit. Und trotzdem erzeugt der MQL5-Compiler in ähnlichen Fällen keine Warnung (er schlägt nicht vor, || in mehrere atomare Operationen zu zerlegen)

Daraus folgt, dass die entsprechende Seite der Geschichte umgedreht wird

 

Ich möchte hinzufügen, ... das sogar in der Dokumentation steht:

"Um die Reihenfolge der Operationen zu ändern, werden Klammern verwendet, die die höchste Priorität haben".

was bedeutet, dass die Verwendung von Klammern für andere Zwecke (die nichts mit der Änderung der Reihenfolge zu tun haben) immer noch gerechtfertigt sein muss

 
fxsaber:

Ich frage mich, wo die Schwelle für die Anzahl der Programmierer liegt, bei der man zögern sollte? 5 ist nicht genug. 1.000 sind nicht genug. 10.000 - zögern. Und dann schließlich N - Vertrauen. Als es jedoch (N-1) war, habe ich ihm noch nicht vertraut.

Der Schwellenwert ist nicht als absoluter Wert definiert, sondern als Prozentsatz der Zahl derer, die anders denken. Die Mehrheit mag sich irren, aber nicht 99 % sind ein zuverlässiges Kriterium.

 
A100:
Und in 1961x32 funktioniert alles... Juhu!

Hmm, interessante Funktion. Ich werde von nun an auch die Bitrate der Plattform angeben.

 
A100:

Und? Hier:

int i = 1 << 2 + 3;

Auch in MQL4 wurde die Priorität verwechselt?

Ja, in der Dokumentation steht, dass die Priorität in der alten Version anders war.

Meiner Meinung nach ist das alles aber schon lange nicht mehr relevant. Dies gilt umso mehr, wenn die strenge Richtlinie angegeben ist. Und wenn jemand den alten Code ausgräbt und versucht, ihn zu kompilieren, muss er/sie sowieso vieles neu machen. Diese Warnungen sind also ein Relikt der Vergangenheit. Deshalb stimme ich zu, dass man Warnungen nicht im luftleeren Raum aussprechen sollte.

 
Sorry, wenn Sie wissen, gibt es eine Möglichkeit, int von void*ptr in Mql andere als (int)StringFormat("%i",ptr) zu erhalten?
 
A100:

In Ihrem Code bedeuten die Klammern also nichts, die Anweisung ... scheint unlogisch zu sein, und im Falle von Klammern müssen wir verstehen, ob sich die Prioritäten/Ordnung tatsächlich geändert haben, während in meinem Code Klammern an sich eine Änderung der Prioritäten/Ordnung bedeuten (das Vorhandensein/Fehlen von Klammern macht alles klar)

Klammern
fxsaber
A100
Es gibt
Unverständlich
die Prioritäten der Maßnahmen werden umgekehrt
keine
die Prioritäten des Betriebs wurden nicht geändert
die Prioritäten der Maßnahmen wurden nicht geändert

Klammern machen einen Ausdruck völlig unzweideutig.

Die Warnungen selbst (nicht nur über Klammern) weisen nicht auf einen Fehler, sondern auf die Möglichkeit eines Fehlers hin. Sie schlagen jedoch vor, alle Warnungen vollständig zu beseitigen, da die Prioritäten (nicht nur mit Klammern) im Compiler eindeutig festgelegt sind.

A100:

Der Schwellenwert wird nicht als absoluter Wert definiert, sondern als prozentualer Anteil an der Zahl derer, die anders denken. Die meisten mögen falsch liegen, aber nicht 99 % sind ein zuverlässiges Kriterium.

Die gleiche Frage über die Zahl nicht in absoluten, sondern in relativen Zahlen. Sind 98 % ein zuverlässiges Kriterium? А 97%? Wo ist die Grenze, ab der man an der Zuverlässigkeit zweifeln muss? Auch wenn 100 % aller Menschen in Ihrer Umgebung behaupten, dass Sie ein gemeingefährlicher Irrer sind. Ist das ein glaubwürdiges Kriterium?

 
Ilya Malev:
Sorry für Off-Topic zu sein, können Sie mir sagen, wenn jemand weiß: gibt es irgendeine Möglichkeit in Mql, int von void*ptr andere als (int)StringFormat("%i",ptr) zu erhalten?

nur über Strings, habe ich verwendet, um Zeiger-Adresse überStringConcatenate(), wie diese zu erhalten:

Cinteger *x = new Cinteger();
   string s;
   int zz=StringConcatenate(s,"*x = ",x);
   Print("OK ",s);
 
Alexey Navoykov:

Das trivialste Beispiel ist die Array-Klasse, die in diesem Fall zum Speichern beliebiger Zeiger verwendet wird:

Ein solches Angebot ist, offen gesagt, von zweifelhaftem Nutzen. Was kann man damit machen? Sie wissen, dass Sie nicht automatisch delete für Array-Mitglieder aufrufen, richtig?

Grund der Beschwerde: