[linux-l] RS-232 oder USB lesen mit (Schauder...) Java Os-unabhaengig

olafBuddenhagen at gmx.net olafBuddenhagen at gmx.net
So Okt 2 21:57:01 CEST 2005


Hallo,

> Die Value, die in den switch geht, ist nicht von dem Enum-Typ abgedeckt,
> den man checken will.

OK, das ist tatsächlich ein Problem. Dachte der Compiler behandelt
enum-typen etwas differenzierter... :-(

Übrigens kann man enum-typen glaub' ich teilweise schützen, indem man
sie in ein struct packt... Was natürlich nicht gerade schön ist :-)

> > Bei enums sollte man keinen default benutzen.
> 
> Warum nicht?
> default könnte vergessene Cases abfangen.

Nein, eben nicht. Wenn man *kein* default: hat, werden vergessen cases
schon beim kompilieren abgefangen.

Das mit den grundsätlich falschen enum-typen ist natürlich 'ne andere
Geschichte. Das sollte man wahrscheinlich schon versuchen abzufangen,
bevor man in die switch-Anweisung geht...

>                 default: fprintf( stderr, "hard programming error! BUG! file: %s line: %d\n", __FILE__, __LINE__);
>                           exit(EXIT_FAILURE);

Für sowas gibt's ein standard-konstrukt, das nennt sich assert().

Vernünftige C-Programmierer benutzen das zuhauf... Damit kann man schon
'ne Menge Mist abfangen.

-Olaf-



Mehr Informationen über die Mailingliste linux-l