[erledigt] enum-Fragen

Hallo allerseits!

Den enum-Datentyp habe ich bislang nicht benutzt, weil ich nie eine Fragestellung hatte, bei der enum geholfen hätte. Da ich nun aber endlich eine Idee hatte, für die dieser Datentyp perfekt ist, wollte ich mal gucken, was die Arduino-Referenz dazu sagt. Doch dieser Datentyp ist dort gar nicht erwähnt. Warum eigentlich nicht?

Außerdem ein Frage, die mir mein C++-Buch nicht beantworten konnte: Wie werden enum-Werte intern repräsentiert? Ist die Anzahl unterschiedlicher Werte begrenzt?

Vielen Dank vorweg für erleuchtende Antworten!

Gregor

Ist die Anzahl unterschiedlicher Werte begrenzt?

öööö, ja..

Wieso ist die Arduino Referenz da so wichtig? Die ist gut für Arduino-spezifische Klassen und Funktionen. Alles andere kann man auch in normalen C und C++ Referenzen nachschlagen.

Die normalen C enums sind nicht viel anders als sequentielle #define Makros. Und der Standard Datentyp ist wie üblich auch int.

In C++11 gibt es auch "strongly typed enums" wo man den Typ angeben kann, die keinen globalen Scope haben und die sich nicht einfach in Integer konvertieren lassen.

EDIT: In C++11 kann man auch den Typ von klassischen C enums selbst angeben

Ist die Anzahl unterschiedlicher Werte begrenzt?

Praktisch nein, theoretisch natürlich ja, wie alles in dieser endlichen Welt.

Ob du mit viel Fleiss 100 verschiedene enum Werte definierst, oder --um es zu überteiben-- 1000, du bist längst nicht an der Grenze.

Wenn du mit enums rechnen willst, brauchst du evtl. lieber doch keine.

gregorss: Wie werden enum-Werte intern repräsentiert?

Hallo,

intern sind die einfach durchnummeriert. Der µC vergleicht also nicht Deine Wörter sondern Zahlen. Nur mußt du die Zahlen nicht wissen.

Hier ist das sehr schön erklärt finde ich. Hatte auch mal danach gesucht.

http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/015_c_strukturen_010.htm

http://www.c-howto.de/tutorial-strukturierte-datentypen-aufzaehlungen-enum.html

Vielen Dank für Eure Antworten!

Wie gewohnt sehr hilfreich (naja, Combie ein bisschen wortkarg :-)

Gruß

Gregor

Serenifly: Wieso ist die Arduino Referenz da so wichtig? ...

Ich dachte, dass in der Referenz (also dem hier) der vollständige „Arduino-Sprachumfang“ aufgeführt ist. Ist es das nicht?

Wenn jemand noch nie programmiert hat und C bzw. C++ über den Arduino kennen lernt (und demnach nie von enum hört), verpasst IMO etwas.

Gruß

Gregor

Nein. Da ist das wichtigste aus Standard C/C++ aufgeführt und alles was die Arduino IDE hinzufügt. Da wird nicht mal die avr libc erklärt (sondern nur unten rechts verlinkt), obwohl man die oft braucht.

Ich sehe auch nicht den Sinn darin da ein allgemeines C/C++ Tutorial draus zu machen. Wobei man enum allerdings erklären könnte, wenn man schon const und #define aufführt.