Enum struktur?

Hey Leute,

ich verstehe das folgende Konstrukt nicht, kann mir mal jemand erklären, was das für ein komisches enum gebilde ist? hauptsächlich das nach der geschweiften Klammer zu UND warum hier nach dem enum Befehl keine Variable angegeben ist?

enum { //data retransmission state
DATA_STATE_READY_TO_SEND, //network buffer contains data to send
DATA_STATE_COLLECTING, //network buffer is not full, or timeout is…
DATA_STATE_SENDING //network buffer is ready to be sent
} sendingState = DATA_STATE_READY_TO_SEND;

Hey Leute,

HI

ich verstehe das folgende Konstrukt nicht, kann mir mal jemand
erklären, was das für ein komisches enum gebilde ist?
hauptsächlich das nach der geschweiften Klammer zu UND warum
hier nach dem enum Befehl keine Variable angegeben ist?

enum { //data retransmission state

Es wird eine Aufzählung deklariert. Dürfte klar sein.

DATA_STATE_READY_TO_SEND, //network buffer contains data to
send
DATA_STATE_COLLECTING, //network buffer is not full, or
timeout is…
DATA_STATE_SENDING //network buffer is ready to be
sent

Hier wurden die einzelnen Aufzählungen deklariert, die in diesem enum enthalten sind. Wie gesagt es sind nur Staten, die keinerlei Werte beinhalten können. Sie zeigen nur einen Zustand an. Daher ist hier auch keine Variable angegeben.

} sendingState = DATA_STATE_READY_TO_SEND;

Zu guter letzt wird der Name des enums definiert und auch dessen Standartwert festgelegt. Das heißt einfach wenn du Beispielweise nun dieses enum benutzen willst:

 sendingState Zustand 

dann hat es sofort den Zustand

 DATA\_STATE\_READY\_TO\_SEND 

Also wahrscheinlich das die Daten gesendet werden können.
Ich hoffe ich konnte etwas helfen.
Mfg Marius

Hey Leute,

ich verstehe das folgende Konstrukt nicht, kann mir mal jemand
erklären, was das für ein komisches enum gebilde ist?
hauptsächlich das nach der geschweiften Klammer zu UND warum
hier nach dem enum Befehl keine Variable angegeben ist?

Die Syntax für enum ist folgende:
enum [tag] {enum-list} [declarator];

„tag“ ist ein Bezeichner mit welchem man dann eigene Variablen declarieren kann:
enum tag meine_variable;

„declarator“, wenn angegeben, erzeugt direkt ein Variable.

enum { //data retransmission state
 DATA\_STATE\_READY\_TO\_SEND, //network buffer contains data to send
 DATA\_STATE\_COLLECTING, //network buffer is not full, or timeout is..
 DATA\_STATE\_SENDING //network buffer is ready to be sent
} sendingState = DATA\_STATE\_READY\_TO\_SEND;

Dies ist im Effekt identisch mit:

enum StateType { //data retransmission state
 DATA\_STATE\_READY\_TO\_SEND, //network buffer contains data to send
 DATA\_STATE\_COLLECTING, //network buffer is not full, or timeout is..
 DATA\_STATE\_SENDING //network buffer is ready to be sent
};





enum StateType sendingState;

sendingState = DATA\_STATE\_READY\_TO\_SEND;

MfG Peter(TOO)