Ich hab mal ne Frage ... ich habe in meinem 8051 eine relativ große Switch-Case Anweisung (ca. 100 Werte). Ich bekomme also einen Befehl (1 Byte) und den vergleiche ich in der Switch-Case anweisung und haue dann 3 Byte raus .... switch(befehl) { case 1: ... break; case 2: ... break; . . case 100: ... break; } das ist sehr unübersichtlich. Gibt es eine möglichkeit das Eleganter/Übersichtilcher zu lösen? Wie sieht es mit der Geschwindigkeit aus? Ist es da egal wie viele Case-Bedingungen man hat (z.B. in c# aufm pc ist es egal) Danke!
>Gibt es eine möglichkeit das >Eleganter/Übersichtilcher zu lösen? Tabelle, indiziert mit "befehl"? >Wie sieht es mit der Geschwindigkeit >aus? Ist es da egal wie viele Case-Bedingungen man hat (z.B. in c# aufm >pc ist es egal) In der Regel ja. Wird von Compiler in eine Sprungtabelle umgesetzt.
Der switch selektiert für jeden Entscheidungswert ein separates Stück Code. Wenn sich dieser Codeschnipsel nur durch ein paar Parameter unterscheiden, dann brauchst Du keinen switch, sondern Du schreibst den Ausgabecode nur einmal und besorgst Dir die Werte aus einem Array, in das Du mit befehl indizierst: struct { char w1; char w2; char w3; ... } AusgabeArray[100] = { { 1, 5, 3 }, // befehl 0 { ........}, // befehl 1 ... { ........} // befehl 100 }; Ausgabe(AusgabeArray[befehl].w1); Ausgabe(AusgabeArray[befehl].w2); Ausgabe(AusgabeArray[befehl].w3);
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.