Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 216
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
ZS: Ich habe auch Makros gesehen wie
Das verstehe ich nicht.
Das verstehe ich nicht.
Es gibt viele Informationen online über die Bequemlichkeit eines solchen Makros, googeln Sie "macro while 0"
https://russianblogs.com/article/9410298326/
In diesem Thread gab es vor langer Zeit ein Beispiel für while(0)
https://www.mql5.com/ru/forum/170952/page141#comment_12897922
Um es klar zu machen, es ist nur für statische (hier geht es um C++). Bei lokalen Variablen gibt es kein Nullsetzen, wenn es einen Benutzer-Cursor gibt.
Mir hat die Erklärung selbst gefallen, die in keiner Weise im Widerspruch zu OOP steht.
Wenn Sie ein einfaches Strukturobjekt erstellen, geschieht Folgendes:
Wenn die Deklaration durch {} geht, wird eine weitere zwischen den Positionen 1-2 eingefügt, wodurch der zugewiesene Speicher mit Nullen gefüllt wird.
Unter dieser Logik leidet die OOP in keiner Weise. Es ist ein gültiger Mechanismus.
Wenn {} deklariert wird, wird zwischen den Punkten 1-2 ein weiterer eingefügt, wodurch der zugewiesene Speicher mit Nullen gefüllt wird.
Unter dieser Logik leidet die OOP in keiner Weise. Gültiger Mechanismus.
Die Logik leidet hier: Warum müssen wir es auf Null setzen, wenn es danach sowieso einen Konstruktor gibt?
Die Logik selbst leidet hier: Warum Nullen, wenn es danach sowieso einen Konstruktor gibt?
Denn eine Struktur mit einem Konstruktor kann nicht in einer Union verwendet werden.
Für union initialisieren Sie nur das erste Mitglied, tauschen Sie die Felder aus und der Test wird ausgeführt.
Überlegen wir, ob es sich lohnt, das Verhalten so zu ändern, dass es den Erwartungen der meisten Nutzer entspricht.
Nehmen wir an, ich habe etwas geändert - jetzt prüfe ich den 1. Term auf x[i].i == 0 (vorher war die Bedingung x[i].x == 0.0)
Ergebnis: false
Und mit ZeroMemory - wahr
Es gibt viele Informationen online über die Bequemlichkeit eines solchen Makros, googeln Sie "macro while 0"
https://russianblogs.com/article/9410298326/
Dieses ganze Durcheinander besteht nur darin, ein Semikolon an das Ende eines Makros zu setzen. Ich verwende überall geschweifte Klammern in Makros und habe damit keine Probleme.
Nehmen wir an, ich habe etwas geändert - jetzt prüfe ich den 1. Term auf x[i].i == 0 (vorher war die Bedingung x[i].x == 0.0)
Ergebnis: false
Und mit ZeroMemory - wahr.
Ja. mql-Fehler
(und in C++ gibt sie true zurück).