enum-element begrenzen
Gibt es eine maximale Anzahl der zulässigen enum
Elemente in C++?
(Frage ergab sich aus der Antwort zu meiner vorherigen Frage auf definiert)
- IMO, wenn Sie Fragen müssen, ist, Sie besser überprüfen Sie Ihre design; aber ich denke, es könnte in Bezug auf die Größe von "int". M.
- Gibt es eine Grundlage für das denken, dass? Angabe alle genannten Elemente in einem enum ist besser als verbreiten Sie über mehrere Dateien für maintability Willen
- Welchen compiler benutzt du? Die Anzahl der zulässigen Werte in einer
enum
variiert von Implementierung zu Implementierung. - Borland C++ Builder 5
- Vergessen Sie generierter code. Eine automatisch generierte Status-Maschine haben könnte, ziemlich viele Staaten.
- Wenn Sie einen bestimmten compiler, probieren Sie es aus. Script-Dateien generieren mit verschiedenen Nummern enum-Werte und kompilieren Sie diese. Sehen, wo der compiler streikt. Finden Sie die genaue Anzahl von binären Annäherung. Dann versuchen Sie, eine Datei von mehreren verschiedenen Enumerationen mit, dass die Anzahl der Werte, falls der Wert hängt von der Anzahl der Kennungen im Umfang, nicht in einem enum.
- Gute Idee, außer dass es manchmal einfacher zu Fragen der "Wolke" 🙂
- Ja, ich in der Regel halten es für besser, zu Fragen, was der compiler sollte, um zuerst tun, bevor die Interpretation, was es scheint zu tun. Ich wollte nicht kritisieren, Fragen Sie hier. Ich habe nur versucht pint heraus, dass, jetzt, wenn dies scheint beigelegt werden, da ein compiler-abhängige Einschränkung, es heraus zu überprüfen kann eine gute Idee sein.
- Kein problem. Nichts für ungut, getroffen. Es ist eine gute Idee, zu versuchen, dass zu.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine festgelegte maximum oder minimum, es hängt davon ab, Ihre Umsetzung. Beachten Sie jedoch, dass Annex-B-Staaten:
Als eine Empfehlung. Aber dies ist ausschließlich eine Empfehlung, keine Voraussetzung.
name = 0
Sie konnten weiter, die Enumeratoren nicht nur einzigartige Werte mehr 😛enum
Elemente eindeutige Werte haben, ansonsten erhalten Sie eineEnum Syntax Error
?enum
ist nur ein Typ mit einer Liste von Konstanten diese Konstanten können sich wiederholen. (In der Tat ist die Frage, auf die Sie verlinkt uns in eurem Beitrag werden wir sehen, unterschiedliche Bezeichner mit identischen Werten.)Enum Syntax Error
durch die Neudefinition der enum-Wert.enum
, wenn so ein compiler ist Scheiße. @Changeling: Nein, versuchen Sie es. Ich bin mir auch nicht sicher, wo Sie bekommen, die "Enum-Syntax-Fehler" Fehler die Sache aus; eine andere Sprache vielleicht? Einenum
ist wirklich nur ein Typ mit einer Liste von Konstanten. Das ist völlig gültig:enum foo { bar = 0, baz = 0, };
enum foo { bar = 0, bar = 1};
- erhalten Sie eine Fehlermeldung:)
:)
Die Sprache nicht angeben, eine solche Sache. Allerdings können Compiler Grenzen haben. Würden Sie haben zu prüfen, Ihre compiler-Dokumentation für das.
Im Fall von C ein enum ist nur ein besserer Gültigkeitsbereich Satz
#define
s. Was auch immer das bedeutet im detail von der standard-C: eine enum-Wert einenMeine Vermutung ist, dass C++ hat eine ähnliche definition und C++0x-fügt der Eingabe-Möglichkeit. Alles in einem würde das bedeuten, dass der Betrag, den Sie von Ihnen haben theoritically begrenzt durch den zugrunde liegenden Typ (was auch immer es ist?
int
die meiste Zeit, nehme ich an, die C-standard ist nicht eindeutig genug in Bezug auf diese). Aber bevor Sie setup Millionen Symbole, die der compiler zum Absturz, oder vielleicht auch run out of memory.