
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
Ein Hinweis für Programmierer:
Wenn wir nun eine Aufzählung bearbeiten müssen, tun wir dies einmal und an einer Stelle. Wir müssen ein neues Element hinzufügen, zum Beispiel element_new = 56, wir fügen hinzu
Und wir machen uns nicht die Mühe, die Funktion get_enumqq_array() zu bearbeiten. Die Technik heißt X-Makro https://en.wikipedia.org/wiki/X_Macro. Wenn Entwickler dies wünschen, können sie Standardaufzählungen auf ähnliche Weise ändern.
Die Aufzählung ist vielleicht nicht auf den ersten Blick ersichtlich, aber sie hat sich folgendermaßen entwickelt:
Super! Ich wusste nichts von dem X-Makro, vielen Dank! Ich verstehe nur den Code nicht, warum es keinen Fehler wegen des Kommas am Ende der Definition ENUM_QQ_HELPER gibt. Bei der Definition von enum oder array sollte nach dem letzten Element kein Komma stehen. Aber der Compiler scheint aus irgendeinem Grund nicht darauf zu fluchen.
Ich habe versucht
wird es nicht. Und die Array-Größe (enum) ist so, wie sie sein sollte. Das ist cool! Es scheint ein Fehler zu sein, aber ich würde lieber einen solchen Fehler haben. Wirklich, das ist praktisch.
Nun, es ist ein legitimer Verstoß, insbesondere bei dieser Art von "Zeug". Machen Sie sich keine Sorgen, auch in C/C++ ist das kein Fehler.
SZZ: im C++-Standard zum Thema Initialisierung:
braced-init-list:
{initializer-list , opt}
{ }
D.h. das Komma am Ende von braced-init-list ist auf höchster Ebene legalisiert.
Das heißt, das Komma am Ende der Klammer-Init-Liste ist auf höchster Ebene legalisiert.
Ein Hinweis für Programmierer:
Was ist mit den normalen Namen, die in den Kommentaren stehen?
Was ist mit den normalen Namen, die in den Kommentaren stehen?
Was ist mit den normalen Namen, die in den Kommentaren stehen?
Ja, das Einfügen eines Kommentars funktioniert nicht. Unglückliche Syntax für die Kommentierung von Enums.
Kann ich ein Beispiel für die betreffende Aufzählung haben?
Ja, es funktioniert nicht, einen Kommentar einzufügen. Unglückliche Syntax für die Kommentierung von Aufzählungen.
Schließen Sie ihn mit /*...*/ ab.
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
Das Problem hier ist, dass der Präprozessor Kommentare (sowohl // als auch /*) nicht fressen will, er erwartet nicht, sie zu sehen, wenn Makros erweitert werden. Ändern Sie entweder die Regeln für den Präprozessor, oder führen Sie eine alternative Möglichkeit ein, Aufzählungen zu kommentieren (der Kommentar wird angezeigt, wenn das Skript in den Einstellungen ausgeführt wird), etwa so:
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
Die Vorverarbeitung erfolgt in mehreren Schritten. Zunächst werden alle Kommentare aus dem Quellcode entfernt, und das Ergebnis wird zur Verarbeitung gesendet. Und das ist der Punkt, an dem der Präprozessor keinen Kommentar erwartet (wenn er die Makros öffnet). Sie wird eine solche Begegnung als Fehler betrachten. Zum Beispiel hier:
Auf den ersten Blick sollte dieser harmlose Code einen Kommentar enthalten. Aber es lässt sich nicht kompilieren.